C++-Compiler Kompatibilität
Nach oben zu C++-Compiler
Projekt > Optionen > C++-Compiler > Kompatibilität
In diesem Dialogfeld setzen Sie spezielle Kompatibilitätsoptionen für den C++-Compiler.
Die Optionen in diesem Dialogfeld ermöglichen eine Abwärtskompatibilität mit früheren Versionen des Compilers. Im Allgemeinen sollten Sie diese Optionen nur auf True
setzen, wenn Sie diese Kompatibilität auch wirklich benötigen. Die Vorgabewerte sind False
.
Inhaltsverzeichnis
Optionen | Beschreibung |
---|---|
Ziel, Übernehmen, Speichern |
Siehe Optionen für das Ziel. |
Gemeinsame Elemente |
C++-Kompatibilitätsoptionen
C++-Kompatibilitätsoptionen | Beschreibung | Compiler-Optionen | |||||
---|---|---|---|---|---|---|---|
bcc32 | bcc32c | bcc64 | bcciosarm64 | bccaarm | |||
Langsame virtuelle Basiszeiger ('slow') |
Verwendet langsame virtuelle Basiszeiger ("slow"). Vorgabe = False |
-Vv |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Konstruktor-Verschiebungen |
Unterstützt Konstruktor-Verschiebungen. Vorgabe = False |
-Vc |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Explizite Vorlagenspezialisierung als Member-Funktion |
Lässt explizite Template-Spezialisierungen als Member-Funktionen zu. Vorgabe = False |
-Vbx |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Altes Borland-Klassen-Layout |
Dies ist eine Option für die Abwärtskompatibilität. Sie veranlasst den C++-Compiler, abgeleitete Klassen so wie in früheren Versionen von C++Builder zu generieren. Aktivieren Sie diese Option, wenn Sie Quelldateien compilieren möchten, die zusammen mit älteren Versionen von C++Builder verwendet werden sollen (z. B. wenn Sie mit einer DLL arbeiten möchten, die sich nicht neu compilieren lässt, oder wenn Sie ältere Datendateien verwenden, die hartcodierte Klassen-Layouts enthalten). Vorgabe = False |
-Vl |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Klassenargumente im alten Stil |
Unterstützt Klassenargumente im alten Stil. Vorgabe = False |
-Va |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Explizite Vorlagenspezialisierung im alten Stil |
Lässt die explizite Template-Spezialisierung im alten Stil zu. Vorgabe = False |
-Vbe |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
virdef-Generierung im alten Stil |
Verwendet die virdef-Erzeugung im alten Stil. Vorgabe = False |
-Vs |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
'this' zuerst |
Erzwingt, wie bei Pascal, zuerst 'this'. Der Compiler legt Parameter normalerweise von rechts nach links auf den Stack. Vorgabe = False |
-Vp |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
VC++-Kompatibilität |
Dient dem Herstellen der Kompatibilität mit Microsoft Visual C++; ersetzt die Aufrufkonvention |
-VM |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
VTable nach vorne |
Setzt den virtuellen Tabellenzeiger an den Anfang des Objekt-Layouts. Vorgabe = False |
-Vt |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Leere Basisklasse mit Länge null |
Normalerweise ist die Größe einer Klasse mindestens ein Byte, auch wenn die Klasse keine Daten-Member definiert. Wenn Sie diese Option setzen, ignoriert der Compiler dieses nicht verwendete Byte für das Speicher-Layout und die Gesamtgröße einer abgeleiteten Klasse; leere Basisklassen verbrauchen keinen Platz in abgeleiteten Klassen. Vorgabe = False |
-Ve |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Leere Klassen-Member-Funktion mit Länge null |
Meist ist die Größe eines Daten-Members in einer Klassendefinition mindestens ein Byte. Wenn diese Option aktiviert ist, ermöglicht der Compiler eine leere Struktur mit Nulllänge. Vorgabe = False |
-Vx |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Allgemeine Optionen
Allgemeine Optionen | Beschreibung | Compiler-Optionen | |||||
---|---|---|---|---|---|---|---|
bcc32 | bcc32c | bcc64 | bcciosarm64 | bccaarm | |||
Abwärtskompatibilität |
Aktiviert alle Kompatibilitätsoptionen |
-Vb |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Lexikalischen Digraph-Scanner deaktivieren |
Deaktiviert den lexikalischen Digraph-Scanner. Digraphen sind Sequenzen aus zwei Zeichen, die für ein einzelnes Zeichen stehen, das auf bestimmten Tastaturen nur schwer erzeugt werden kann. Wenn diese Option True ist, werden solche Diagraphen nicht erkannt. Vorgabe = False |
-Vg |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Ref-zu-Ref nicht ausblenden |
Früher war eine Referenz auf eine Referenz nicht zulässig. Das neue Standardverhalten folgt den C++11-Regeln. Der Compiler blendet die beiden Referenzen jetzt aus. Zum Beispiel: typedef int & intr;
typedef intrr &;
Der Typ |
-Vbc |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Aufrufkonvention nicht verkürzen |
Ist diese Option gesetzt, deaktiviert der Compiler die Unterscheidung von Funktionsnamen, wenn der einzig mögliche Unterschied in inkompatiblen Codeerzeugungsoptionen besteht. Wenn Sie diese Option aktivieren, kann der Linker z. B. nicht feststellen, ob ein Aufruf einer __fastcall-Member-Funktion mit der Aufrufkonvention cdecl erfolgt. Diese Einstellung ermöglicht das Compilieren von alten Bibliotheksdateien, die auf andere Weise nicht neu compiliert werden können. Vorgabe = False |
-VC |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Alle Kompatibilitätsoptionen aktivieren |
Aktiviert die meisten Kompatibilitätsoptionen, die in altem Code verwendet wurden:
Vorgabe = False |
-Vo |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Neue Operatorennamen aktivieren |
Ermöglicht neue Operatorennamen wie "and", "or", "and_eq", "bitand" usw. Vorgabe = False |
-Vn |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Gültigkeitsbereich für for-Anweisung |
Gibt den Gültigkeitsbereich der Variablen für Schleifen-Ausdrücke an. Die Ausgabe der folgenden Codesegemente ändert sich je nach Einstellung dieser Option: int main(void)
{
for(int i=0; i<10; i++)
{
cout << "Inside for loop, i = " << i << endl;
} //Ende des for-Schleifenblocks
cout << "Outside for loop, i = " << i << endl; //Fehler ohne diese Option
} //Ende des Blocks, der die for-Schleife enthält
Ist diese Option deaktiviert (Standardeinstellung), erstreckt sich die Variable iüber den Gültigkeitsbereich hinaus, wenn die Verarbeitung das Ende der Schleife erreicht. Deshalb erhalten Sie den Compilierungsfehler "Undefiniertes Symbol", wenn Sie diesen Code mit der deaktivierten Option compilieren. Ist die Option Gültigkeitsbereich für for-Anweisung aktiviert, erstreckt sich die Variable i über den Gültigkeitsbereich hinaus, wenn die Verarbeitung das Ende des Blocks mit der Schleife erreicht. In diesem Fall würde die Ausgabe so lauten: Inside for loop, i = 0 ... Outside for loop, i = 10 Vorgabe = False |
-Vd |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Globale Funktionen in Segmenten |
Erzeugt alle globalen Funktionen in ihrem eigenen virtuellen oder schwachen Segment. |
-VA |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Microsoft-Header-Suchalgorithmus |
Verwendet den Microsoft-Algorithmus zum Suchen von Header-Dateien. |
-VI |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Nativer Quelltext für MBCS |
Gibt nativen Code statt Unicode für Multibyte-Zeichen aus. |
-Vw |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Nicht konstante Aufrufe für konstantes Objekt |
Lässt den Aufruf einer nicht konstanten Member-Funktion für ein konstantes Objekt zu. |
-Vbn |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Nicht konstante Referenzbindung |
Lässt die nicht konstante Referenzbindung zu. |
-Vbr |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Nicht-konstante String-Literale |
Behandelt String-Literale nicht als konstant. |
-Vbs |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Alte 'using'-Regeln in Vorlagen |
Verwendet die alten Borland-Regeln für "using" in Templates. |
-Vbu |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Alte 8.3 Include-Suche |
Verwendet den alten 8.3-Algorithmus zum Suchen von Header-Dateien. |
-Vi |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Alte Auflösung für das Überladen |
Verwendet die alten Auflösungsregeln für das Überladen. |
-Vbo |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Alte Typregeln für dreiteilige Operatoren |
Verwendet die alten Borland-Typregeln für dreiteilige Operatoren. |
-Vbt |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt | |
Multizeichenkonstanten umkehren |
Der Compiler dreht die Reihenfolge von Multizeichenkonstanten um. |
-Vr |
N/A |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
Plattform nicht unterstützt |
-Vb-Compiler-Optionen für BCC32
Befehlszeilenoptionen | Bedeutung |
---|---|
-Va |
Unterstützt Klassenargumente im alten Stil. |
-Vb |
Aktiviert alle -Vb-Optionen. Aktiviert die Abwärtskompatibilität mit den Bcc-Versionen 5.8.2 und früher. |
-Vb+ |
Aktiviert alle -Vb-Optionen. |
-Vb- |
Deaktiviert alle -Vb-Optionen. |
-Vb. |
Setzt alle -Vb-Optionen auf ihre Vorgabewerte zurück. Steht nur in der Befehlszeile, nicht in der IDE, zur Verfügung. |
-Vbc |
Blendet Referenz-zu-Referenz nicht aus und lässt qualifizierte Referenzen zu. |
-Vbe |
Lässt die explizite Template-Spezialisierung im alten Stil zu. |
-Vi |
Verwendet den alten 8.3-Algorithmus zum Suchen von Header-Dateien. |
-Vbn |
Lässt den Aufruf einer nicht konstanten oder nicht-volatile Member-Funktion für ein konstantes oder volatile Objekt zu. |
-Vbo |
Verwendet alte Borland-Auflösungsregeln für das Überladen. |
-Vbr |
Verwendet alte Borland-Regeln für die Referenzbindung. |
-Vbs |
Behandelt String-Literale als nicht konstant. |
-Vbt |
Verwendet alte Borland-Typregeln für dreiteilige Operatoren. |
-Vbu |
Verwendet alte Borland-Regeln für "using" in Templates. |
-Vbx |
Lässt explizite Template-Spezialisierungen als Member-Funktionen zu. |
Siehe auch
- Von C++-Compilern, die durch Clang erweitert wurden, nicht unterstützte Optionen
- C++ (Gemeinsame Optionen)
- BCC32.EXE: Der C++-Compiler für 32-Bit-Windows
- BCC32C.EXE
- BCC64.EXE: Der C++-Compiler für 64-Bit-Windows
- BCCOSX.EXE: Der C++-Compiler für macOS
- BCCIOSARM64: Der C++-Compiler für 64-Bit-iOS-Geräte
- BCCAARM.EXE: Der C++-Compiler für Android