GDL 前処理と GPD 前処理の違い
GDL には、GPD 実装 に存在しなかった 次の4 つの新しいプリプロセッサ ディレクティブがあります。#PreCompiled、 #UndefinePrefix、 #EnablePPDirective、 #DisablePPDirective。
さらに、 #Undefine ディレクティブも引数を一切受け入れません。 引数が存在しないということは、最後に定義されたシンボルが未定義であることを意味します。これにより、以前に定義されたシンボルが復元されます。
GDL ファイルも GPD パーサーによって解析されることを意図している場合は、これらの新しいディレクティブを使用しないことをお勧めします。 TP で新しいプリプロセッサ ディレクティブを GPD パーサーで使用する GDL ファイルに組み込む場合は、古いプリプロセッサがこれらの新しいディレクティブを実行しないようにするための代替 (下位互換性) パスを指定する必要があります。 各パスは、次のコード例に示すように、#Ifdef:、#Else、#Endif コンストラクト内で囲む必要があります。
#Ifdef: NewParserVersion
*% Use new preprocessor directives if the parser supports them.
*% Lock out this entire code path by changing the prefix.
#SetPPPrefix: #New_
#New_PreCompiled: ...
*% Actually might use a mixture of old and new directives!
#New_UndefinePrefix:
#Else:
*% Otherwise only use the original set of directives.
#OldDirectives: ...
#Endif:
さらに、プリプロセッサ プレフィックスは、新しいディレクティブ フォークの実行中に別のものに設定する必要があります。 誤ったプレフィックスを持つディレクティブが検出されると、パーサーによって警告が表示されます。