まず、@ctomitaが言及したDIPPツールが私の場合に完全に機能することを確認します。
2 つ目は、このツールを使用して事例を解決する方法を人々と共有することは有益だと思います。
Test1.pas
//--------------------------------------
{$IFDEF ONE}
ShowMessage('If ONE was defined');
WriteLn('If ONE was defined');
{$IFDEF ONE_ONE}
ShowMessage('If ONE_ONE was defined');
WriteLn('If ONE_ONE was defined');
{$ENDIF}
{$ELSE}
ShowMessage('If ONE was not defined');
WriteLn('If ONE was not defined');
{$ENDIF}
//--------------------------------------
{$IFNDEF ONE}
ShowMessage('If ONE was not defined');
WriteLn('If ONE was not defined');
{$ELSE}
ShowMessage('If ONE was defined');
WriteLn('If ONE was defined');
{$ENDIF}
//--------------------------------------
ONE
Test1.pas からすべての条件付きブロックを削除するには、現在定義されている条件付きシンボルがあるかのように仮定して、コマンド プロンプトから次のコマンドを使用します。ZERO
dipp -o -c -dZERO -h-ONE "Test1.pas" "Test1_output.pas"
Test1_output.pas
//--------------------------------------
ShowMessage('If ONE was not defined');
WriteLn('If ONE was not defined');
//--------------------------------------
ShowMessage('If ONE was not defined');
WriteLn('If ONE was not defined');
//--------------------------------------
-c
オプションが指定されている場合、DIPP は未定義の条件で囲まれたコードをスキップし、定義された条件に応じてインクルード ファイルを挿入することに注意してください。つまり、DIPP はソース コードをコンパイラと同じように扱います。