C++-Compiler

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Erzeugen


Projekt > Optionen > Erzeugen > C++-Compiler

Verwenden Sie dieses Dialogfeld zum Festlegen von Optionen für die C++-Compiler.

Optionen Beschreibung

Ziel, Übernehmen, Speichern

Siehe Optionen für das Ziel.

Gemeinsame Elemente

Siehe Gemeinsame Elemente auf den Projektoptionsseiten.

C++-Compilierung

Klassischer Compiler

Optionen des klassischen Compilers Beschreibung Compiler-Optionen
bcc32 bcc32c bcc64 bccx64

'Klassischen' Borland-Compiler verwenden

Aktiviert entweder den klassischen BCC32-Compiler oder den durch Clang-erweiterten BCC32C-Compiler als C++-Compiler für 32-Bit-Windows-Plattformen.

Verwenden Sie diese Option, um von BCC32 zu BCC32C und umgekehrt zu wechseln. Sie können diese Option auf die folgenden Werte setzen:

  • True: BCC32 ist als C++-Compiler für Projekte für 32-Bit-Windows-Plattformen aktiviert.
  • False: BCC32C ist als C++-Compiler für Projekte für 32-Bit-Windows-Plattformen aktiviert.

Vorgabe = True

Plattform nicht unterstützt

Plattform nicht unterstützt

Allgemeine Compilierung

Allgemeine Compilierung Beschreibung Compiler-Optionen
bcc32 bcc32c bcc64 bccx64

Aufrufkonvention

Pascal
(-p)
Weist den Compiler an, eine Pascal-Aufrufsequenz für Funktionsaufrufe (keine Unterstriche, nur Großbuchstaben, Aufruffunktion bereinigt den Stack, Parameter von links nach rechts verarbeiten) zu erzeugen. Diese Option hat denselben Effekt wie die Deklaration aller Unterroutinen und Funktionen mit dem Schlüsselwort __pascal. Die resultierenden Funktionsaufrufe sind normalerweise kleiner und schneller als diejenigen, die mit der Aufrufkonvention C (-pc) generiert wurden. Funktionen müssen Argumente immer mit passendem Typ und passender Anzahl übergeben. Mit den Schlüsselwörtern __cdecl, __fastcall oder __stdcall kann eine Funktion oder eine Unterroutine explizit mit einer anderen Aufrufkonvention deklariert werden.

-p

Plattform nicht unterstützt

Plattform nicht unterstützt

Plattform nicht unterstützt
C

(-pc)*
Weist den Compiler an, eine C-Aufrufsequenz für Funktionsaufrufe (Unterstriche generieren, Berücksichtigung von Groß- und Kleinschreibung, Parameter von rechts nach links verarbeiten) zu erzeugen. Diese Option hat denselben Effekt wie die Deklaration aller Unterroutinen und Funktionen mit dem Schlüsselwort __cdecl. Funktionen, die mit der C-Aufrufkonvention deklariert sind, können eine variable Parameterliste entgegennehmen, das heißt, die Anzahl der Parameter muss nicht fest sein.
Mit den Schlüsselwörtern __pascal, __fastcall oder __stdcall kann eine Funktion oder Unterroutine explizit mit einer anderen Aufrufkonvention deklariert werden. Das ist die Standardvorgabe.

-pc -mcdecl -mcdecl -mcdecl
_msfastcall

(-pm)
Weist den Compiler an, die Aufrufkonvention __msfastcall für alle Funktionen zu verwenden, für die keine explizite Aufrufkonvention deklariert ist.

-pm Plattform nicht unterstützt Plattform nicht unterstützt Plattform nicht unterstützt
Fastcall (register)

(-pr)
Weist den Compiler an, alle Unterroutinen und Funktionen mit der Register-Parameterübergabekonvention zu erzeugen. Dies hat denselben Effekt wie die Deklaration aller Unterroutinen und Funktionen mit dem Schlüsselwort __fastcall. Wenn diese Option aktiviert ist, erwarten Funktionen und Routinen die Parameterübergabe in Registern.

Mit den Schlüsselwörtern __pascal, __cdecl oder __stdcall kann eine Funktion oder Unterroutine explizit mit einer anderen Aufrufkonvention deklariert werden.

-pr -mfastcall -mfastcall -mfastcall
stdcall

(-ps)
Weist den Compiler an, eine stdcall-Aufrufsequenz für Funktionsaufrufe (keine Unterstriche, Schreibweise beibehalten, Ablegen aufgerufener Funktionen auf dem Stack, Parameter von rechts nach links verarbeiten) zu erzeugen. Diese Option hat denselben Effekt wie die Deklaration aller Unterroutinen und Funktionen mit dem Schlüsselwort __stdcall. Funktionen müssen Argumente immer mit passendem Typ und passender Anzahl übergeben.

Mit den Schlüsselwörtern __cdecl, __pascal oder __fastcall kann eine Funktion oder Unterroutine explizit mit einer anderen Aufrufkonvention deklariert werden.

Vorgabe = C (-pc)

-ps -mrtd, -mstdcall -mrtd, -mstdcall -mrtd, -mstdcall

Datenausrichtung

Byte
(-a1)
Erzwingt keine Ausrichtung von Variablen oder Datenfeldern an bestimmten Speichergrenzen. Der Compiler richtet die Daten an geraden oder ungeraden Adressen aus, je nach der nächsten verfügbaren Adresse. Während die Byte-Ausrichtung zwar kompaktere Programme erzeugt, sind diese meist jedoch etwas langsamer. Die anderen Optionen zur Datenausrichtung erhöhen die Geschwindigkeit, mit der 80x86-Prozessoren Daten abrufen und speichern.

-a1

-fpack-struct=1

N/A N/A
Word

(-a2)
2-Byte-Datenausrichtung. Richtet Nicht-Zeichendaten an geraden Adressen aus. Automatische und globale Variablen werden korrekt ausgerichtet. char- und unsigned char-Variablen und -Felder können an jeder Adresse platziert werden; alle anderen werden an geraden Adressen ausgerichtet.

-a2 -fpack-struct=2 N/A N/A
Double Word

(-a4)
4-Byte-Datenausrichtung. Richtet Nicht-Zeichendaten an 32-Bit-Grenzen aus (4 Byte). Datentypen mit weniger als 4 Byte werden entsprechend ihrer Typgröße ausgerichtet.

-a4 -fpack-struct=4 N/A N/A
Quad Word

(-a8)*
8-Byte-Datenausrichtung. Richtet Nicht-Zeichendaten an 64-Bit-Grenzen aus (8 Byte). Datentypen mit weniger als 8 Byte werden entsprechend ihrer Typgröße ausgerichtet. Das ist die Standardvorgabe.

-a8 -fpack-struct=8 N/A N/A
Paragraph

(-a16)
16-Byte-Datenausrichtung. Richtet Nicht-Zeichendaten an 128-Bit-Grenzen aus (16 Byte). Datentypen mit weniger als 16 Byte werden entsprechend ihrer Typgröße ausgerichtet.

Vorgabe = Quad Word (8)

-a16 -fpack-struct=16 N/A N/A

C++-Zugriffskontrolle deaktivieren

Weist den Compiler an, keine Zugriffskontrolle zu erzwingen. Das heißt, dass der Compiler keinen Fehler ausgibt, wenn auf ein protected oder private Member zugriffen wird, der nicht für den Zugriff vorgesehen ist. Verwenden Sie diese Option für Code, der für BCC32 zulässig ist, aber von BCC64 als Verstoß gegen die Zugriffskontrolle behandelt wird (besser wäre es allerdings, den Code zu aktualisieren, damit er mit den BCC64-Regeln übereinstimmt).

Vorgabe = False

Plattform nicht unterstützt

N/V

-fno-access-control

-fno-access-control

Stapel-Compilierung aktivieren

Aktiviert die Stapel-Compilierung.

Wenn diese Option aktiviert ist, werden alle Quellmodule (anstatt jedes Modul einzeln) in derselben Befehlszeile an den C++-Compiler übergeben. Bei der Stapel-Compilierung werden Build-Ereignisse für die gesamte Compilierung und nicht für einzelne Dateien erzeugt. Eine Stapel-Compilierung verwendet einen Satz von Projektoptionen. Das Überschreiben dieser Optionen auf Dateiebene ist nicht zulässig.

Wenn Sie einen durch Clang erweiterten C++-Compiler verwenden, können Sie mit "Stapel-Compilierung aktivieren" in Kombination mit "C++-Compiler in separatem Prozess ausführen" die parallele Compilierung aktivieren. Durch Clang erweiterte Compiler für 32-Bit-Plattformen halten die Stapel-Compilierung nach dem Fehlschlagen der Compilierung einer Datei an.

Vorgabe = Aus

Maximale Fehleranzahl

(-j)

Bricht die Compilierung ab, sobald eine bestimmte Anzahl von Fehlern erkannt wurde. Werte von 0 bis 255 sind möglich.

Vorgabe = 1

Die Eingabe von 0 bewirkt, dass die Compilierung fortgesetzt wird, bis entweder das Ende der Datei oder die maximale Warnungsanzahl erreicht ist, je nachdem, welcher Fall zuerst eintritt.

-j -ferror-limit N/A N/A
Maximale Warnungsanzahl

(-g)

Bricht die Compilierung ab, sobald eine bestimmte Anzahl von Warnungen erkannt wurde. Werte von 0 bis 255 sind möglich.

Vorgabe = 255

Die Eingabe von 0 bewirkt, dass die Compilierung fortgesetzt wird, bis entweder das Ende der Datei oder die maximale Fehleranzahl erreicht ist, je nachdem, welcher Fall zuerst eintritt.

-g Plattform nicht unterstützt Plattform nicht unterstützt Plattform nicht unterstützt
Beim ersten Fehler anhalten
(-jb)

Bricht die Stapel-Compilierung nach der ersten Datei ab, die Fehler verursacht. Zum Beispiel:

BCC32.exe -c -gb *.ccp
BCC32.exe -c -gb Datei1.cpp Datei2.cpp

Ohne das Flag -jb kann die Stapel-Compilierung bis zur nächsten vorgesehenen Datei fortgeführt werden, auch wenn eine vorherige Datei einen Fehler verursacht hat.

-jb Plattform nicht unterstützt Plattform nicht unterstützt Plattform nicht unterstützt

Erweiterte Fehlerinfos

Der Compiler erzeugt bei Fehlern umfassendere Informationen.

Vorgabe = False

-Q

Plattform nicht unterstützt

Plattform nicht unterstützt

Plattform nicht unterstützt

C++-Compilierung erzwingen

Veranlasst den Compiler, alle Quelltextdateien als C++-Dateien, unabhängig von ihrer Dateinamenserweiterung, zu compilieren.

Vorgabe = False

-P

-x c++

-x c++

-x c++

Anweisungs-Set

80386
(-3)*
Erzeugt für den geschützten Modus eines 80386-Prozessors kompatible Anweisungen. Dies ist die Vorgabe.

-3

Plattform nicht unterstützt

Plattform nicht unterstützt

Plattform nicht unterstützt
80486

(-4)
Erzeugt für den geschützten Modus eines i486-Prozessors kompatible Anweisungen.

-4 Plattform nicht unterstützt Plattform nicht unterstützt Plattform nicht unterstützt
Pentium

(-5)
Erzeugt Pentium-Anweisungen. Diese Option erhöht zwar die Ausführungsgeschwindigkeit auf Pentium-Computern, kann das Programm allerdings etwas vergrößern, wenn es mit der Option 80386 oder i486 compiliert wird. Ferner ist bei für Pentium compiliertem Code mit einer Leistungseinbuße auf nicht-Pentium-Systemen zu rechnen.

-5 Plattform nicht unterstützt Plattform nicht unterstützt Plattform nicht unterstützt
Pentium Pro

(-6)
Pentium Pro-Anweisungen generieren

Vorgabe = 80386

-6 Plattform nicht unterstützt Plattform nicht unterstützt Plattform nicht unterstützt

Enums mit Integergröße

Weist Aufzählungstypen (Variablen des Typs enum) ein ganzes Wort (ein 4-Byte-Int bei 32-Bit-Programmen) zu.

Ist die Option nicht aktiviert (-bi-), weist der Compiler den kleinsten Integertyp zu, der die Aufzählungswerte aufnehmen kann: Der Compiler weist unsigned oder signed char zu, wenn die Werte der Aufzählung im Bereich zwischen 0 und 255 (Minimum) oder zwischen -128 und 127 (Maximum) liegen, oder unsigned oder signed short, wenn sich die Werte der Aufzählung in einem der folgenden Bereiche befinden: 0..65535 oder -32768..32767.

Der Compiler weist den Aufzählungswerten ein 4-Byte-Int (32 Bit) zu, wenn ein Wert außerhalb dieser Bereiche liegt.

Vorgabe = True

-bi

-fshort-enums

N/A

N/A

Enums als Integer

Aktiviert Enums mit Integergröße (-bi, weiter oben beschrieben) und behandelt Enums aus der Sicht der Typprüfung als Integer (schränkt die Typprüfung ein).
Wenn diese Option deaktiviert ist (-b-), legt der Compiler sizeof(enum x) so klein wie möglich an und wendet Enum-Regeln für die Typprüfung an.

Vorgabe = False

-b

-fshort-enums

N/V

N/A

Sprachkonvention

ANSI
(-A)

Verwendet ANSI-Schlüsselwörter und -Erweiterungen. Compiliert C- und C++-ANSI-kompatiblen Quelltext. Dies sorgt für eine verbesserte Portabilität. Nicht-ANSI-Schlüsselwörter werden als Schlüsselwörter ignoriert.

-A

-fno-borland-extensions

N/A N/A
GNU
(-AG)Verwendet Schlüsselwörter und Erweiterungen von Gcc (GNU Compiler Collection). Gcc wird von der Free Software Foundation unter http://gcc.gnu.org/ vertrieben. Weist den Compiler an, bestimmte GNU-Schlüsselwörter und -Erweiterungen, wie __attribute__, __const, __inline__, __signed__, zu erkennen. Siehe GNU-Attribute.
-AG Plattform nicht unterstützt Plattform nicht unterstützt Plattform nicht unterstützt
K & R

(-AK) Verwendet Schlüsselwörter und Erweiterungen von Kernighan und Ritchie (K&R). Weist den Compiler an, nur die von Kernighan und Ritchie definierten Erweiterungsschlüsselwörter zu erkennen. Alle C++-Erweiterungsschlüsselwörter werden als normale Bezeichner interpretiert.

-AK Plattform nicht unterstützt N/A N/A
Borland/CodeGear

(auch -A-) (-AT)* Verwendet C++-Schlüsselwörter und -Erweiterungen von Borland/CodeGear/Embarcadero. Weist den Compiler an, Erweiterungen für C-Schlüsselwörter zu erkennen, einschließlich near, far, huge, asm, cdecl, pascal, interrupt, _export, _ds, _cs, _ss, _es und die Register-Pseudovariablen (_AX, _BX usw.). Das ist die Standardvorgabe.

-AT -fborland-extensions Plattform nicht unterstützt Plattform nicht unterstützt
Unix System V

(-AU) Verwendet Schlüsselwörter und Erweiterungen von UNIX-System V. Weist den Compiler an, nur die UNIX V-Schlüsselwörter zu erkennen. Alle C++-Erweiterungsschlüsselwörter von Borland/CodeGear/Embarcadero werden als normale Bezeichner interpretiert.

Hinweis: Wenn der Quelltext Syntaxfehler in Deklarationen enthält, sollten Sie prüfen, ob diese Option auf Borland/CodeGear gesetzt ist.

Vorgabe = Borland/CodeGear.

-AU Plattform nicht unterstützt N/A N/A

Registervariablen

Ohne
(-r-)*
Deaktiviert die Verwendung von Registervariablen. Weist den Compiler an, keine Registervariablen zu verwenden, selbst dann nicht, wenn das Schlüsselwort register vorhanden ist. Dies ist die Vorgabe.

-r- Plattform nicht unterstützt Plattform nicht unterstützt Plattform nicht unterstützt
Explizit

(-rd)
Verwendet Registervariablen nur, wenn Sie das Schlüsselwort register angeben, und ein Register verfügbar ist. Mit dieser Option oder der Option Immer (-r) optimieren Sie die Nutzung von Registern. Sie können -rd in #pragma-Optionen verwenden.

-rd Plattform nicht unterstützt Plattform nicht unterstützt Plattform nicht unterstützt
Immer

(-r)
Weist automatisch Registervariablen zu, wenn möglich, auch wenn Sie das Schlüsselwort register nicht verwenden. Im Allgemeinen können Sie Immer verwenden, es sei denn, Sie arbeiten mit bereits vorhandenem Assembly-Code, der keine Registervariablen unterstützt.

Vorgabe = Ohne

-r Plattform nicht unterstützt Plattform nicht unterstützt Plattform nicht unterstützt

Maximale Anzahl der auszugebenden Fehler bis Abbruch festlegen (0 = keine Beschränkung)

Um die Anzahl der für den 64-Bit-C++-Compiler zulässigen Fehler festzulegen, wählen Sie in diesem Feld die Zahl aus und geben die gewünschte Anzahl ein. Vorgabe = 1

Plattform nicht unterstützt

N/V

-ferror-limit

-ferror-limit

Short enums

Weist den 64-Bit-Compiler an, Aufzählungen in Minimalgröße zu verwenden.

Weist einem Enum-Typ nur so viele Bytes zu, wie für den deklarierten Bereich der möglichen Werte erforderlich sind.

Vorgabe = False

Option "Enums mit Integergröße"

Option "Enums mit Integergröße"

-fshort-enums

-fshort-enums

Standard-Stack-Frames

Erzeugt einen Standard-Stack-Frame (Standardcode für Einritt und Austritt in die/aus der Funktion). Dies ist bei der Fehlersuche hilfreich, da sich der Stack der aufgerufenen Unterroutinen einfacher durchlaufen lässt.

Wenn diese Option deaktiviert ist, werden alle Funktionen, die keine lokalen Variablen verwenden und keine Parameter besitzen, mit verkürztem Eintritts- und Rückgabecode compiliert. Damit wird der Code kleiner und schneller.

Wenn eine Quelltextdatei zu Debugging-Zwecken compiliert wird, sollte diese Option immer aktiviert sein.

Vorgabe = True

-k

Plattform nicht unterstützt

Plattform nicht unterstützt

Plattform nicht unterstützt

Untergeordnete Seiten

Siehe auch