The Delphi Bug List

Entry No.
580
コンパイラ
コンパイラ指令子 $E の問題:コンパイラ指令子 $IFDEF を無視してしまう
1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 4.03 5.0 5.01 6.0 6.01 6.02 Kylix 1.0
N/A N/A Absent Absent Absent Absent Absent Absent Absent Exists Exists Exists Exists Exists Fixed
解説
Reported by Primoz Gabrijelcic; checked by Reinier Sterkenburg
再現方法:
  • D5 を開始します。
  • 新規コンソールアプリケーションを作成します。
  • 以下のコードを貼り付けます:
  • program ifdefbug;
    
    {$APPTYPE CONSOLE}
    
    {$IFDEF NOTDEF}
    {$E XXX}
    {$ENDIF}
    
    begin
    end.
  • 実行します。Delphi はプログラムを(通常通り拡張子 .exe で)コンパイルした上で、"プログラム 'X:\somepath\ifdefbug.XXX' が見つかりません。" と報告します。
    まったく変です。
当然ながら、これは D4 IDE では期待通り正常に動作します。問題は、ソースコードと IDE の統合方法にあります。IDE は {$E XXX} 指令子があるというだけで、その値を プロジェクト - オプション - アプリケーション - ターゲットファイル拡張子 にセットします。この値を空に戻すことは結果としてソースファイルの変更になりますが、IFDEF がある場合にはエラーを伴う変更になってしまいます。
Latest update of this entry: 2002-04-03
本家 The Delphi Bug List のエントリーはこちら
The Delphi Bug List 日本語訳 へ