C-Präprozessoranforderungen für MIDL

Diese Seite gilt nur für Entwickler, die bestimmte Gründe haben, den Microsoft C/C++-Präprozessor als von MIDL verwendeten Präprozessor zu ersetzen, oder für Entwickler, die benutzerdefinierte Präprozessorschalter angeben müssen. Die MIDL-Switches /cpp _ cmd, /cpp _ optund /no _ cpp werden verwendet, um das Standardverhalten des Compilers zu überschreiben. Es gibt in der Regel keinen Grund, den Microsoft C/C++-Präprozessor zu ersetzen oder benutzerdefinierte Präprozessorschalter anzugeben.

Der MIDL-Compiler verwendet während der ersten Verarbeitung der IDL-Datei einen C-Präprozessor. Die Buildumgebung, die beim Kompilieren der IDL-Dateien verwendet wird, ist einem C/C++-Standardpräprozessor zugeordnet. Wenn ein anderer Präprozessor verwendet werden soll, aktiviert der MIDL-Compilerschalter /cpp _ cmd eine Außerkraftsetzung des C/C++-Präprozessor-Standardnamens:

midl /cpp_cmd preprocessor_name filename

_Präprozessorname

Gibt den Namen des Präprozessors an, der von MIDL verwendet werden soll. Kann mit einem Pfad zur Binärdatei angegeben werden. Die .exe-Erweiterung ist optional.

Dateiname

Gibt den Namen der IDL-Datei an.

  • Der MIDL-Compiler erwartet, dass jeder Präprozessor die folgenden Konventionen beachtet:
  • Die Eingabedatei wird als letztes Argument in der Befehlszeile angegeben.
  • Der Präprozessor muss die Ausgabe an das Standardausgabegerät stdout umleiten.
  • Im Ausgabestream des Präprozessors sind die # Zeilendirektiven vorhanden, um bessere Diagnosemeldungen zu ermöglichen.
  • Die Zeilendirektiven sind die einzigen Präprozessordirektiven im Ausgabestream.

MIDL geht davon aus, dass der generierte Präprozessor alle Präprozessordirektiven aus dem Eingabestream des Compilers entfernt hat, mit Ausnahme der Vorkommen der Zeilendirektive, die zum Ermitteln der Quellposition in Compilermeldungen erforderlich sind. Wenn sie einen anderen Präprozessor als den Microsoft C/C++-Präprozessor angibt, oder wenn Sie Präprozessoroptionen mit dem Schalter /cpp _ opt angeben, ist die Angabe einer geeigneten Präprozessoroption erforderlich, die die Zeilendirektiven in den Eingabestream des Compilers einträgt. Für den Microsoft C/C++-Präprozessor müsste beispielsweise die Option /E verwendet werden:

midl /cpp_cmd cl.exe /cpp_opt "/E" file.idl

Die # Zeilendirektive wird von MIDL in einer der folgenden Formen akzeptiert:

#line digit-sequence "filename" new-line
 
# digit-sequence "filename" new-line

Eine vollständige Beschreibung der Zeilendirektive und anderer Präprozessordirektiven finden Sie in der Dokumentation zum verwendeten C-Compiler.

MIDL akzeptiert nur die Zeilenpräprozessordirektive. Wenn daher der Schalter /no _ cpp verwendet wird, darf die Eingabedatei keine anderen Präprozessordirektiven aufweisen, oder die Eingabedatei muss vor dem Aufrufen von MIDL verarbeitet worden sein.

Weitere Informationen finden Sie unter Umgang mit # Definitionen in IDL-Dateien.