Mit den allgemeinen C++-Optionen steuern Sie folgende C++-Spracheigenschaften:
- ob die Schlüsselwörter
wchar_tundboolerkannt werden welchen Gültigkeitsbereich die Initialisierungsanweisungen in
for- undwhile-Schleifen habenob die veraltete Template-Spezialisierungs-Syntax akzeptiert wird
Die aufgezählten Spracheigenschaften werden im Cfront-C++-Modus nicht unterstützt.
-K arg1[,arg2...]
Allgemeine Eingaberegeln zur -K-Option finden Sie im Abschnitt "Aufruf-Syntax und allgemeine Regeln". Als Argumente arg zur Steuerung des C++-Frontends sind folgende Angaben möglich:
using_stdno_using_std
Diese Argumente betreffen den Gebrauch der C++-Bibliotheksfunktionen, deren Namen alle im Standard-Namensraum std definiert sind.
Bei Angabe von -K using_std ist das Verhalten so, als ob am Beginn einer Übersetzungseinheit die folgenden Zeilen stehen würden:
namespace std{}using namespace std;
-K using_std ist die Voreinstellung im erweiterten C++ V3-Modus (-X v3-compatible -X nostrict).
-K no_using_std ist die Voreinstellung im strikten C++ V3-Modus (-X v3-compatible -X strict), im C++ 2017-Modus (-X 2017) und im C++ 2020-Modus (-X 2020) und das einzig mögliche Verhalten im Cfront-C++-Modus (-X v2-compatible).
Wenn im C++ V3-Modus, im C++ 2017-Modus oder im C++ 2020-Modus -K no_using_std gesetzt ist, muss das Quellprogramm vor dem ersten Gebrauch einer C++-Bibliotheksfunktion die Anweisung using namespace std; enthalten oder die Namen entsprechend qualifizieren.
wchar_t_keywordno_wchar_t_keyword
Mit diesen Argumenten legen Sie fest, ob wchar_t als Schlüsselwort erkannt wird.
-K wchar_t_keyword ist die Voreinstellung im C++ V3-Modus und das einzig mögliche Verhalten im C++ 2017- und C++ 2020-Modus. In diesem Fall wird das Präprozessor-Makro _WCHAR_T definiert.
-K no_wchar_t_keyword ist die Voreinstellung und das einzig mögliche Verhalten im Cfront-C++-Modus.
boolno_bool
Mit diesen Argumenten legen Sie fest, ob bool als Schlüsselwort erkannt wird.
-K bool ist die Voreinstellung im C++ V3-Modus und das einzig mögliche Verhalten im C++ 2017- und C++ 2020-Modus. In diesem Fall wird das Präprozessor-Makro _BOOL definiert.
-K no_bool ist die Voreinstellung und das einzig mögliche Verhalten im Cfront-C++-Modus.
old_for_initnew_for_init
Mit diesen Argumenten legen Sie fest, wie eine Initialisierungsanweisung in for- und while-Schleifen behandelt werden soll.
-K old_for_init
Spezifiziert, dass eine Initialisierungsanweisung zum selben Gültigkeitsbereich wie die gesamte Schleife gehört. Dies ist die Voreinstellung im Cfront-C++-Modus.
-K new_for_init
Spezifiziert die neue ANSI-C++-konforme Gültigkeitsbereichsregel, die die gesamte Schleife mit ihrem eigenen implizit generierten Gültigkeitsbereich umgibt. Dies ist die Voreinstellung im C++ V3-Modus und das einzig mögliche Verhalten im C++ 2017- und C++ 2020-Modus.
no_old_specializationold_specialization
Diese Argumente sind nur in den Sprachmodi C++ V3, C++ 2017 und C++ 2020 relevant. Sie legen fest, ob die neue Syntax für Template-Spezialisierungen template<> verpflichtend ist.
-K no_old_specialization ist Voreinstellung im C++ V3-Modus und das einzig mögliche Verhalten im C++ 2017- und C++ 2020-Modus. In diesem Fall wird das Makro __OLD_SPECIALIZATION_SYNTAX vom Compiler nicht definiert.
Die Angabe von -K old_specialization definiert der Compiler das Makro __OLD_SPECIALIZATION_SYNTAX implizit mit dem Wert 1.