Freigeben über


Unterschiede zwischen GDL und GPD-Vorverarbeitung

Es gibt vier neue Präprozessordirektiven in GDL, die in der GPD-Implementierung nicht vorhanden waren: #PreCompiled, #UndefinePrefix, #EnablePPDirective und #DisablePPDirective.

Darüber hinaus akzeptiert die #Undefine-Direktive jetzt auch kein Argument. Das Fehlen des Arguments bedeutet, dass das zuletzt definierte Symbol nicht definiert ist, wodurch das zuvor definierte Symbol wiederhergestellt wird.

Es wird empfohlen, diese neuen Direktiven nicht zu verwenden, wenn die GDL-Datei auch vom GPD-Parser analysiert werden soll. Wenn Sie möchten, dass tp die neuen Präprozessordirektiven in eine GDL-Datei integrieren soll, die auch von GPD-Parsern verwendet werden soll, muss ein alternativer Pfad (Abwärtskompatibilität) bereitgestellt werden, der es dem älteren Präprozessor ermöglicht, die Ausführung dieser neuen Direktiven zu vermeiden. Jeder Pfad sollte in ein #Ifdef:, #Else#Endif-Konstrukt eingeschlossen werden, wie im folgenden Codebeispiel gezeigt.

#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:

Darüber hinaus sollte das Präprozessorpräfix auf etwas anderes festgelegt werden, während der neue Direktivenverzweigung ausgeführt wird. Der Parser warnt, wenn Anweisungen mit dem falschen Präfix angezeigt werden.