BCC32: Der C++-Befehlszeilen-Compiler

Aus RAD Studio (Deutsch)
Wechseln zu: Navigation, Suche

Nach oben zu Befehlszeilenhilfsprogramme - Index

Der Embarcadero C++-Compiler (BCC32.EXE) ist eine Shell für den Ressourcen-Compiler. Er ruft abhängig von der Befehlszeilensyntax BRCC32 und RLINK32 auf.

Inhaltsverzeichnis

Befehlszeilensyntax

bcc32 [Option [Option...}] <Dateiname> [<Dateiname>...]

Der Name des Befehlszeilen-Compilers, alle Optionen und Dateinamen müssen voneinander durch Leerzeichen getrennt sein. Stellen Sie jeder Option entweder einen Bindestrich (-) oder einen Schrägstrich (/) voran, wie zum Beispiel:

BCC32 -Ic:\code\hfiles

Sie können auch Optionen in Konfigurationsdateien (.CFG) festlegen, die im folgenden Abschnitt beschrieben werden.

Mit BCC32 können Sie .OBJ-Dateien an ILINK32 oder .ASM-Dateien an TASM32 (wenn TASM32 auf Ihrem System installiert ist) senden.

In der Hilfe für die BCC32-Befehlszeile finden Sie detaillierte Informationen

Um die Hilfe für die BCC32.exe-Befehlszeile im Befehlsfenster anzuzeigen, geben Sie die Befehlszeilenoption —h an.

Um beispielsweise eine Liste der gebräuchlichsten Befehlszeilenoptionen anzuzeigen, geben Sie in der Befehlszeile Folgendes ein:

BCC32 -h

Die angezeigte Liste weist die Optionen aus, die in der Voreinstellung (*) aktiviert sind.

C:\>bcc32 -h 
C++ 5.92 für Win32 Copyright (c) 1993, 2009 Embarcadero 
Verfügbare Optionen (* = Vorgabeeinstellung, xxx = hat Unteroptionen: verwenden Sie -h -X):
(Hinweis: -X- oder -w-XXX macht in der Regel die mit -X getroffene Festlegung rückgängig)
  -3      80386 protected-mode kompatible Anweisungen generieren
  -4      80386/80486 protected-mode kompatible Anweisungen generieren
  -5      Pentium-Anweisungen generieren
  -6      Pentium Pro-Anweisungen generieren
  -Axxx   ANSI-Konformität aktivieren
  -B      In .ASM (-S) compilieren, dann in .OBJ zusammenstellen
  -C      Verschachtelte Kommentare aktivieren
  -CP     Code-Paging (für MBCS) aktivieren
  -D      -D <Name> definiert 'Name' als a Null-String, oder verwenden Sie -D<Name>=<Wert>
  -E      Zu verwendenden Assembler festlegen
  -G      Größe/Geschwindigkeit optimieren; verwenden Sie stattdessen -O1 und -O2
  -Hxxx   Vorcompilierte Header generieren und verwenden
  -I      Suchpfad für Include-Dateien festlegen
  -Jxxx   Optionen für Template-Erzeugung
  -K      Vorzeichenlosen Standardzeichentyp setzen
  -L      Suchpfad für Bibliothek
  -M      Linker-Map-Datei erstellen
  -O      Sprünge optimieren
  -P      C++-Compilierung unabhängig von Dateierweiterung durchführen
  -Q      Erweiterte Compiler-Fehlerinformationen
  -R      Browser-Informationen in generierte .OBJ-Dateien einbeziehen
  -RF     Referenzen auf Symbol suchen
* -RT     Laufzeittypinformationen aktivieren
  -S      In Assemblierung compilieren
  -T      Assembler-Option festlegen, z.B. -Tx
  -U      Definition der vorherigen Namensdefinitionen aufheben
  -Vxxx   Kompatibilitätsoptionen
  -Wxxx   Ziel ist eine Windows-Anwendung
  -X      Autoabhängigkeitsausgabe des Compilers deaktivieren
  -axxx   Grenzen für Datenausrichtung festlegen.  Vorgabe ist -a8; -a- bedeutet -a1
* -b      Enums in Integer-Größe erstellen (mit -b- erhalten Sie die kleinstmögliche Größe)
  -c      Nur in Objektdatei compilieren, nicht linken
  -d      Doppelte Strings zusammenführen
  -dc     Strings in das schreibgeschützte Datensegment stellen
  -dw     Strings in das (beschreibbare) Datensegment stellen
  -e      Zielpfad der ausführbaren Datei angeben
* -ff     Schnelles Gleitkomma
  -fp     Pentium-sicheres FDIV
* -fq     Stille Gleitkommavergleichsanweisung verwenden (FUCOMP)
  -g      Abbruch der Stapel-Compilierung nach n Warnungen (Vorgabe = 255)
  -h      Hilfe anfordern ('-h -' zeigt die gesamte Hilfe an). Themenspezifisch mit: -h -V
  -i      Maximale signifikante Bezeichnerlänge festlegen (Vorgabe = 250)
  -j      Abbruch der Stapel-Compilierung nach n Fehlern (Vorgabe = Keiner)
* -k      Standard-Stack-Frames generieren
  -l      Optionen an den Linker übergeben; Beispiel: -ls -l-x
  -m      Abhängigkeitsinformationen für Make-Datei generieren
  -md     Abhängigkeitsinfo in .d-Dateien aufnehmen, nicht in die Objektdatei
  -mm     System-Header-Dateien beim Generieren der Abhängigkeitsinfo ignorieren
  -mo     Ausgabedatei für Abhängigkeitsinfo festlegen
  -n      Ausgabeverzeichnis für Objektdateien festlegen
  -o      Ausgabedateiname festlegen (-o<Dateiname> oder —o <Dateiname> werden unterstützt)
  -pxxx   Pascal-Aufrufkonvention verwenden
  -q      Identifikationsbanner des Compilers unterdrücken
  -r      Registervariablen verwenden
  -rd     Registervariablen nur verwenden, wenn Registerschlüsselwort eingesetzt wird
  -s      Mit dem nicht-inkrementellen Linker des Systems linken
  -txxx   Eine andere Form für die -Wxxx-Optionen; es gibt keine Unterschiede
* -u      Unterstriche für Symbolnamen generieren
  -vxxx   Quelltext-Debugging aktivieren
  -w      Alle Warnungen anzeigen
  -w!     Bei Warnungen nicht null vom Compiler zurückgeben
  -xxxx   Exception-Behandlung aktivieren
  -y      Zeilennummern für das Debuggen einschalten
  -z      Optionen zur Neudefinition der Standardsegmentnamen

Hilfe für bestimmte Optionsgruppen, wie Axxx und -Vxxx, anzeigen

Sie können detaillierte Informationen zu mehrbuchstabigen Optionen, wie -Axxx (Sprachkompatibilität und Standardkomplianz) und -Vxxx (Abwärtskompatibilität) anzeigen.

Verwenden Sie dazu die Befehlszeilenoption -h mit dem Anfangsbuchstaben der Optionsgruppe (z.B. -A für die -Axxx-Optionen). BCC32 zeigt nur die Hilfethemen für die angegebene Optionsgruppe an (z.B. für —Axxx, —Vxxx oder —Wxxx).

Um beispielsweise eine Beschreibung für die Optionen -Axxx (Sprachkompatibilität und Standardkomplianz) anzuzeigen, geben Sie die Befehlszeilenoptionen —h und —A ein:

C:\>bcc32 -h -A
Embarcadero C++ 6.10 für Win32 Copyright (c) 1993-2009 Embarcadero 
Verfügbare Optionen (* = Vorgabeeinstellung, xxx = hat Unteroptionen: verwenden Sie -h -X):
(Hinweis: -X- oder -w-XXX macht in der Regel die mit -X getroffene Festlegung rückgängig)
  -A      ANSI-Konformität aktivieren
  -AF     SUN Forte-Schlüsselwörter und -Erweiterungen verwenden
  -AG     GNU-Schlüsselwörter und -Erweiterungen verwenden
  -AK     Schlüsselwörter und Erweiterungen von Kernighan und Ritchie
  -AT     Embarcadero C++-Schlüsselwörter und -Erweiterungen verwenden (auch -A-)
  -AU     Schlüsselwörter und Erweiterungen aus UNIX-System V
  -An     C99-Schlüsselwörter und -Erweiterungen verwenden
  -Ax     C++-0x-Schlüsselwörter und -Erweiterungen verwenden

Im folgenden Beispiel zeigt die BCC32-Befehlszeilenhilfe Einzelheiten zu den -Vxxx-Optionen (Abwärtskompatibilität) an:

C:\>bcc32 -h -V
C:\Documents and Settings\khouser>bcc32 -h -V
C++ 6.20 für Win32 Copyright (c) 1993-2009 Embarcadero 
Verfügbare Optionen (* = Vorgabeeinstellung, xxx = hat Unteroptionen: verwenden Sie -h -X):
(Hinweis: -X- oder -w-XXX macht in der Regel die mit -X getroffene Festlegung rückgängig)
  -V      Kompatibilitätsoptionen
  -V0     Externe virtuelle C++-Tabellen
  -V1     Public C++ virtuelle Tabellen
* -VA     Alle globalen Funktionen in ihrem eigenen virtuellen/schwachen Segment generieren
  -VC     Aufrufkonvention nicht zu Symbolen verkürzen
  -VF     MFC-Kompatibilität
  -VF3    Unterstützung von MFC 3.2
  -VF4    Unterstützung von MFC 4.0
* -VI     Microsoft-Suchalgorithmus zum Suchen von Header-Dateien verwenden
  -VM     Microsoft Visual C++-Kompatibilität
  -Va     Klassenargumente im alten Stil unterstützen
  -Vb     Abwärtskompatibilität mit den Bcc-Versionen 5.8.2 und früher aktivieren
  -Vbc    Referenz zu Referenz nicht ausblenden und qualifizierte Referenzen zulassen
  -Vbe    Explizite Template-Spezialisierung im alten Stil zulassen
  -Vbn    Aufruf einer nicht konstanten oder nicht-volatile Member-Funktion für ein konstantes oder volatile Objekt zulassen
  -Vbo    Alte Borland-Auflösungsregeln für das Überladen verwenden
  -Vbr    Nicht konstante Referenzbindung zulassen
  -Vbs    String-Literale als nicht konstant behandeln
  -Vbt    Alte Borland-Typregeln für dreiteilige Operatoren verwenden
  -Vbx    Explizite Template-Spezialisierung als Member-Funktion zulassen
  -Vc     Konstruktor-Verschiebungen unterstützen
  -Vd     Für Bereichsregeln in for-Anweisung altes C++ verwenden
  -Ve     Leere Basisklasse mit Länge null
  -Vg     Lexikalischen Digraph-Scanner deaktivieren
  -Vi     Alten 8.3-Suchalgorithmus zum Suchen von Header-Dateien verwenden
  -Vl     Altes Borland-Klassen-Layout verwenden
  -Vm     Optionen für Elementzeiger
  -Vmd    Kleinstmögliche Repräsentation für Member-Zeiger verwenden
  -Vmm    Mehrfachvererbung für Member-Zeiger unterstützen
  -Vmp    Deklarierte Genauigkeit von Member-Zeigern beachten
  -Vms    Einfachvererbung für Member-Zeiger unterstützen
  -Vmv    Keine Beschränkungen für Verweis von Elementzeigern
  -Vn     Neue Operatorennamen aktivieren and, or, and_eq, bitand, etc.
  -Vo     (Fast) alle Kompatibilitäts-Flags setzen; mit altem Code verwenden
  -Vp     'this' wie bei Pascal zuerst forcieren
  -Vr     Reihenfolge für Multizeichen-Konstante umkehren
  -Vs     virdef-Generierung im alten Stil
  -Vt     Virtuellen Tabellenzeiger an den Anfang des Objektlayouts setzen
  -Vv     Langsame virtuelle Basiszeiger verwenden ('slow')
  -Vw     Ausgabe von nativem Code statt Unicode für Multi-Byte-Zeichen
  -Vx     Leere Klassen-Member-Funktion mit Länge null

Voreinstellungen

BCC32.EXE verfügt über Optionen, die als Voreinstellung gesetzt sind. Zum Deaktivieren einer voreingestellten Option oder zum Überschreiben von Optionen in einer Konfigurationsdatei, stellen Sie der Option ein Minuszeichen (-) nach.

Dateien mit der Erweiterung .CPP werden als C++-Dateien compiliert. Dateien mit der Erweiterung .C, ohne Erweiterung oder mit anderen Erweiterungen als .CPP, .OBJ, .LIB oder .ASM werden als C-Dateien compiliert.

Der Compiler versucht, mit einer Moduldefinitionsdatei mit demselben Namen wie die .EXE-Datei zu linken.

Allgemeine Compiler-Ausgabeoptionen:

Option Beschreibung Einzelheiten
-c

Compiliert in.OBJ, kein Linken

Compiliert und stellt die benannten C-, .CPP- und .ASM-Dateien zusammen, führt aber mit den resultierenden .OBJ-Dateien kein Linken durch.

-e <Dateiname>

Geben Sie den Namen der ausführbaren Datei an.

Linkt die Datei und verwendet <Dateiname> als Namen für die ausführbare Datei. Wird unter dieser Option kein Name für eine ausführbare Datei angegeben, erstellt der Linker eine ausführbare Datei auf der Basis des Namens der ersten Quelldatei oder Objektdatei, die im Befehl aufgelistet ist.

-l <x>

Übergibt Optionen an den Linker.

Verwenden Sie diese Befehlszeilenoption, um Optionen <x> von einem Compilier-Befehl an den Linker zu übergeben. Verwenden Sie die Befehlszeilenoption -l-x, um eine bestimmte Linker-Option zu deaktivieren.

-M

Erstellt eine MAP-Datei.

Verwenden Sie diese Compiler-Option, um den Linker anzuweisen, eine MAP-Datei zu erstellen.

-o <Dateiname>

Compiliert .OBJ in <Dateiname>.

Compiliert die angegebene Quelltextdatei in <Dateiname>.OBJ.

-P

C++-Compilierung

Veranlasst den Compiler, alle Quelltextdateien als C++-Dateien, unabhängig von ihrer Dateinamenserweiterung, zu compilieren. Verwenden Sie ‑P‑, um alle .CPP-Dateien als C++-Quelltextdateien und alle anderen Dateien als C-Quelltextdateien zu compilieren.

Die Befehlszeilenoption -Pext veranlasst den Compiler, alle Quelltextdateien als C++-Dateien zu compilieren und ändert die Standarderweiterung in die unter ext angegebene. Diese Option ermöglicht es Programmierern, andere Erweiterungen für C++-Code als die Standarderweiterung zu verwenden.

Die Option -P-ext compiliert Dateien anhand ihrer Erweiterung (.CPP wird in C++ compiliert, alle anderen Erweiterungen werden in C compiliert) und setzt die Standarderweiterung (nicht.CPP).

-tWM

Erzeugt ein Multithread-Ziel.

Erzeugt eine Multithread-.EXE- oder -.DLL-Datei. Diese Option ist nicht erforderlich, wenn Sie eine Moduldefinitionsdatei (.DEF-Datei) in Ihre Compiler- und Linker-Befehle einfügen, welche die Art der 32-Bit-Anwendung angeben, die Sie erstellen möchten.



Prioritätsregeln bei Optionen

Die Befehlszeilen-Compiler werten Optionen von links nach rechts aus und folgen diesen Regeln:

  • Wenn Sie eine Option mit Ausnahme von -D, -I, -L oder -U mehrfach eingeben, überschreibt die zuletzt eingegebene Option die zuvor eingegebenen.
  • Optionen, die in der Befehlszeile eingegeben werden, überschreiben die Optionen in Konfigurations- und Response-Dateien (außer die Optionen ‑D, ‑I, ‑L und ‑U, die kumulativ sind).

Verzeichnisse für Befehlszeilenoptionen

Der Embarcadero C++-Compiler kann mehrere Verzeichnisse nach Include- und Bibliotheksdateien durchsuchen. Dies bedeutet, dass die Syntax für die Befehlszeilenoptionen der Bibliotheksverzeichnisse (-L) und der Include-Verzeichnisse (-l) mehrfaches Aufführen einer gegebenen Option zulässt (vgl. Syntax der #define-Option (-D)). Die Syntax für diese Optionen lautet:

-L <Verzeichnisname> [<Verzeichnisname>;...]
-I <Verzeichnisname> [<Verzeichnisname>;...]

Der Parameter <Verzeichnisname> zusammen mit -L und -I kann jedes beliebige Verzeichnis oder jeder beliebige Verzeichnispfad sein. Sie können mehrere Verzeichnisse in der Befehlszeile auf folgende Arten eingeben:

  • Sie können mehrere Einträge mit einer einzigen Option -L oder -I zusammenfassen, wenn Sie ein Semikolon verwenden:
BCC32.EXE —L Verzeichnisname1;Verzeichnisname2;Verzeichnisname3 —I include1;include2;include3 meineDatei.c
  • Sie können jede Optionen mehrfach in der Befehlszeile verwenden:
BCC32.EXE —L Verzeichnisname1 —L Verzeichnisname2 —L Verzeichnisname3 —I include1 —I include2 —I include3 meineDatei.c
  • Sie können Mischformen verwenden:
BCC32.EXE —L Verzeichnisname1;Verzeichnisname2 —L Verzeichnisname3 —I include1;include2 —I include3 meineDatei.c

Wenn Sie die Optionen -L oder -I in der Befehlszeile mehrfach angeben, ist das Ergebnis kumulativ. Der Compiler durchsucht alle aufgeführten Verzeichnisse in der Reihenfolge von links nach rechts.

Compiler-Konfigurationsdateien (.CFG-Dateien)

Wenn Sie bestimmte Optionen immer wieder verwenden, können Sie diese in einer Konfigurationsdatei zusammenfassen. Sie brauchen sie dann nicht immer wieder in die Befehlszeile einzugeben. Eine Konfigurationsdatei ist eine gewöhnliche ASCII-Textdatei, die eine oder mehrere Befehlszeilenoptionen enthält. Die einzelnen Optionen müssen durch Zeilenschaltung oder Leerzeichen getrennt sein.

Bei jedem Compilierungsbefehl sucht BCC32.EXE nach einer Konfigurationsdatei mit dem Namen BCC32.CFG. Der Compiler sucht die .CFG-Dateien zunächst in dem Verzeichnis, in dem Sie den Compilierungsbefehl eingegeben haben, und anschließend in dem Verzeichnis, in dem sich der Compiler befindet.

In Ergänzung zu der üblichen .CFG-Datei können weitere Konfigurationsdateien erstellt und verwendet werden.

Um eine Konfigurationsdatei anzugeben, verwenden Sie folgende Syntax an der Stelle, an der Sie sonst die Compiler-Optionen angeben würden:

+[Pfad]Dateiname

Um z.B. eine Konfigurationsdatei mit dem Namen MYCONFIG.CFG zu verwenden, können Sie folgende Befehlszeile eingeben:

BCC32 +C:\MYPROJ\MYCONFIG.CFG mycode.cpp 

Optionen, die in der Befehlszeile eingegeben werden, überschreiben die Einstellungen (außer die Optionen ‑D, ‑I, ‑L und ‑U), die in Konfigurationsdateien gespeichert sind.

Response-Dateien

In Response-Dateien können Sie sowohl Compiler-Optionen als auch Dateinamen in einer einzigen Datei aufführen (im Gegensatz zu Konfigurationsdateien, die nur Compiler-Optionen akzeptieren). Eine Response-Datei ist eine gewöhnliche ASCII-Textdatei, die eine oder mehrere Befehlszeilenoptionen und/oder Dateinamen enthält; alle Einträge in der Datei sind voneinander durch Leerzeichen oder Zeilenschaltung getrennt. So vereinfachen Response-Dateien Ihre Compilierungsbefehle; außerdem erlauben sie die Verwendung einer längeren Befehlszeile als dies in den meisten Betriebssystemen zulässig ist.

Die Syntax für die Verwendung einer einzelnen Response-Datei ist:

BCC32 @[Pfad]respfile.txt 

Die Syntax für die Verwendung mehrerer Response-Dateien lautet:

BCC32 @[Pfad]respfile.txt @[Pfad]otheresp.txt 

Response-Dateien haben die Dateinamenserweiterung .REP.

Optionen, die in der Befehlszeile eingegeben werden, überschreiben die Optionen (außer die Optionen ‑D, ‑I, ‑L und ‑U) oder Dateinamen in einer Response-Datei.

Siehe auch

In anderen Sprachen