CPP32.EXE: Der C-Compiler-Präprozessor
Nach oben zu Befehlszeilenhilfsprogramme - Index
CPP32 erzeugt eine Datei für 32-Bit-Windows mit dem Listing eines C- oder C++-Programms, in der alle #include
-Dateien und #define
-Makros erweitert wurden. Da Sie den Präprozessor während der normalen Compilierung nicht verwenden müssen, ist die Listing-Datei beim Debuggen hilfreich.
Wenn der Compiler Fehler innerhalb eines Makros oder einer Include-Datei meldet, bekommen Sie oft mehr Informationen über diesen Fehler, wenn Sie die Include-Dateien oder die Ergebnisse der Makroerweiterungen einsehen. In vielen Multi-Pass-Compilern geschieht dies in einem zusätzlichen Durchlauf, und die Ergebnisse des Durchlaufs können untersucht werden. Da der C++Builder-Compiler ein Single-Pass-Compiler ist, erhalten Sie mit CPP32 dieselbe Funktionalität wie mit anderen Compilern.
Die Ausgabe jeder von CPP32 verarbeiteten Datei wird in eine Datei im aktuellen Verzeichnis (oder in das durch die Option -n
bezeichnete Ausgabeverzeichnis) geschrieben. Diese Datei besitzt denselben Namen wie die Quelldatei, jedoch mit der Erweiterung .I
.
Diese Ausgabedatei ist eine Textdatei, die alle Zeilen der Quelldatei sowie alle Include-Dateien enthält. Alle Zeilen mit Präprozessor-Direktiven wurden entfernt, zusammen mit allen konditionalen Textzeilen, die von der Compilierung ausgeschlossen sind. Innerhalb einer Textzeile werden alle Makros durch ihren Erweiterungstext ersetzt.
Standardmäßig werden den erzeugten Textzeilen der Dateiname und die Zeilennummer der Quell- oder Include-Datei, aus der sie stammen, vorangestellt. Mit der Option -Sr
erzeugen Sie eine Datei, die diese Kommentare nicht enthält. Diese Datei können Sie dann an den Compiler übergeben (verwenden Sie die Compiler-Option -P
, um eine C++-Compilierung zu erzwingen).
Inhaltsverzeichnis
Befehlszeilensyntax
CPP32 [<options>] <filename[s]>
Befehlszeilenelemente
Element | Beschreibung |
---|---|
|
Befehlszeilenoptionen. Optional. |
|
Definiert eine Datei, die verarbeitet werden soll. Es können mehrere Dateien angegeben werden, aber mindestens eine muss angegeben werden. |
Um eine Kurzhilfe für die Befehlszeile anzuzeigen, geben Sie Folgendes ein:
cpp32 -h
Um die gesamte Hilfe für die Befehlszeile anzuzeigen, geben Sie Folgendes ein:
cpp32 -h -
Befehlszeilenoptionen
CPP32 erkennt dieselben Optionen wie BCC32 und die folgenden Zusätze für die Option -Sx
(vorverarbeitetes Ausgabeformat steuern):
Optionen für -Sx
Option | Beschreibung |
---|---|
|
Kommentare in vorverarbeiteten Dateien beibehalten |
|
#define und #undef in vorverarbeiteten Dateien beibehalten |
|
Bei Fehlern Ausgabedatei beibehalten |
|
Ausgabe im #line-Stil erzeugen |
|
IDL-spezifische Syntax akzeptieren |
|
Ausgabe durch das Beibehalten von Kommentaren und Einzügen lesbar machen |
|
Statistik der Dateinamen und Zeilenanzahl anzeigen |
CPP32 als Makro-Präprozessor
CPP32 kann als Makro-Präprozessor verwendet werden. Die resultierende .I-Datei lässt sich anschließend mit BCC32 compilieren. Das folgende einfache Programm zeigt, wie CPP32 eine Datei verarbeitet.
Quelldatei: HELLOCPP.C
#define NAME "C++Builder"
#define BEGIN {
#define END }
main()
BEGIN
printf("%s\n", NAME);
END
CPP32-Befehlszeile
Eingabe:
CPP32 HELLOCPP.C
Ausgabe (in HELLOCPP.I)
/* HELLOCPP.C 1: */
/* HELLOCPP.C 2: */
/* HELLOCPP.C 3: */
/* HELLOCPP.C 4: */
/* HELLOCPP.C 5: */main()
/* HELLOCPP.C 6: */{
/* HELLOCPP.C 7: */printf("%s\n", "C++Builder");
/* HELLOCPP.C 8: */}
/* HELLOCPP.C 9: */
MIDL mit CPP32.EXE verwenden
MIDL (Microsoft Interface Definition Language) ist ein RPC-Compiler. Um MIDL zusammen mit dem C++-Präprozessor (CPP32.EXE) zu verwenden, müssen Sie den folgenden MIDL-Befehl eingeben:
MIDL -cpp_cmd {CPP32} -cpp_opt "-Sr -oCON {CPP32 options}" {MIDL options} {.idl/.acf file}
Hier wurden die folgenden Optionen verwendet:
Option | Beschreibung |
---|---|
|
Teilt MIDL mit, welcher Präprozessor verwendet werden soll, um eine .IDL- oder .ACF-Datei zu verarbeiten. MIDL ruft zum Erweitern von Makros in Quelldateien den Präprozessor auf. |
|
Gibt die Befehlszeilenoptionen für den Präprozessor an. Die Option |
|
Übergibt die Optionen an CPP32. |
|
Alle MIDL-Befehlszeilenoptionen. |
|
Die Quelldatei, die MIDL verarbeitet. |
BCC32, CPP32 und UUIDs
In einigen Fällen akzeptiert CPP32 gültige UUIDs nicht. Eine gültige UUID Anweisung ist zum Beispiel:
uuid(5630EAA0-CA48-1067-B320-00DD010662DB)
Wenn CPP32 auf 5630EAA0
trifft, wird dieser Wert als Gleitkommazahl interpretiert. Da es sich jedoch um eine ungültige Gleitkommazahl handelt, gibt der Präprozessor eine Fehlermeldung aus. Schließen Sie die UUID in Anführungszeichen ein, um dieses Problem zu umgehen. Wenn Sie MIDL mit CPP32 verwenden, müssen Sie die Option -ms_ext
verwenden. Die UUID-Anweisung wird zu:
uuid("5630EAA0-CA48-1067-B320-00DD010662DB")
und die MIDL-Befehlszeile lautet:
MIDL -ms_ext CPP32 -cpp_opt "-Sr {CPP32 options}" {MIDL options} {.idl/.acf file}