CPP32.EXE: Der C-Compiler-Präprozessor

Aus RAD Studio
Wechseln zu: Navigation, Suche

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).


Befehlszeilensyntax

CPP32 [<options>] <filename[s]>


Befehlszeilenelemente

Element Beschreibung

<Optionen>

Befehlszeilenoptionen. Optional.

<Dateiname>

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

-Sc

Kommentare in vorverarbeiteten Dateien beibehalten

-Sd

#define und #undef in vorverarbeiteten Dateien beibehalten

-Sk

Bei Fehlern Ausgabedatei beibehalten

-Sl

Ausgabe im #line-Stil erzeugen

-SI

IDL-spezifische Syntax akzeptieren

-Sr

Ausgabe durch das Beibehalten von Kommentaren und Einzügen lesbar machen

-Ss

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

-cpp_cmd {CPP32}

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.

-cpp_opt "{options}"

Gibt die Befehlszeilenoptionen für den Präprozessor an. Die Option -Sr entfernt Kommentare mit Zeilennummern und Dateinamen aus allen Zeilen der Präprozessorausgabe. Die Option -oCON gibt an, dass die Präprozessorausgabe statt in eine Datei an die Standardausgabe geleitet wird. Das Präprozessor-Banner und die gerade verarbeitete Datei werden nicht ausgegeben. Wenn Sie -oCON in einer .CFG-Datei verwenden, die vom Präprozessor behandelt wurde, wird das Banner ausgegeben.

{CPP32 options}

Übergibt die Optionen an CPP32.

{MIDL options}

Alle MIDL-Befehlszeilenoptionen.

{.idl/.acf file}

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}


Siehe auch