-X cc
Diese Option dient zur Auswahl des C-Modus. Sie muss nur angegeben werden, wenn der Compiler im C-Modus laufen soll, aber nicht durch cc
, c11
oder c89
aufgerufen wird.
-X CC
Diese Option dient zur Auswahl des C++-Modus. Sie muss nur angegeben werden, wenn der Compiler im C++-Modus laufen soll, aber nicht durch CC
aufgerufen wird.
-X 89
-X 90
-X 1990
C89-Modus (Voreinstellung beim Compileraufruf mit c89
)
Diese Option ist nur im C-Modus erlaubt. Der Compiler unterstützt C-Code gemäß dem ANSI-/ISO-C-Standard von 1990. Dieser Standard ist auch als ANSI C89-Standard bekannt. Die Angabe entspricht der Angabe -X a
bzw. -X c
des C/C++ V3-Compilers.__STDC_VERSION__
hat den Wert 199409L.
-X 11
-X 2011
C11-Modus (Voreinstellung beim Compileraufruf mit cc
bzw. c11
oder Angabe von -X cc
)
Diese Option ist nur im C-Modus erlaubt. Der Compiler unterstützt C-Code gemäß dem C-Standard von 2011.__STDC_VERSION__
hat den Wert 201112L.
-X kr
-X KR
K&R-C-Modus
Diese Option ist nur im C-Modus erlaubt. Dieser Modus sollte nicht für Neuentwicklungen verwendet werden. Er ist beispielsweise dazu geeignet, „alte“ K&R-C-Quellen zu portieren und/oder sukzessive auf ANSI-C umzustellen.
Der Compiler akzeptiert C-Code gemäß der Definition von Kernighan/Ritchie („Programmieren in C“, 1. Ausgabe). Darüberhinaus unterstützt er C-Sprachmittel des ANSI-C-Standards, die in der Semantik nicht von der Kernighan/Ritchie-Definition abweichen (z.B. Funktions-Prototypen, const
, volatile
). Dies erleichtert die Umstellung einer K&R-C-Quelle auf ANSI-C. Es stehen alle C-Bibliotheksfunktionen des Systems zur Verfügung (ANSI-Funktionen, POSIX- und X/OPEN-Funktionen, UNIX-Erweiterungen). Bezüglich des Präprozessor-Verhaltens ist ANSI-/ISO-C voreingestellt. Mit der Option -K kr_cpp
kann das Präprozessor-Verhalten auf K&R-C umgestellt werden (ggf. bei der Portierung von alten C-Quellen notwendig).__STDC_VERSION__
ist undefiniert. Die Option -X strict hat keinen Effekt, d.h. es gilt immer -X nostrict.
-X 17
-X 2017
C++ 2017-Modus
Diese Option ist nur im C++-Modus erlaubt. Der Compiler unterstützt C++-Code gemäß dem C++-Standard von 2017. Es steht die C++-Standard 2017-Bibliothek zur Verfügung.__cplusplus
hat den Wert 201703L und __STDC_VERSION__
den Wert 199409L.
-X 20
-X 2020
C++ 2020-Modus (Voreinstellung beim Compileraufruf mit CC
oder Angabe von -X CC
)
Diese Option ist nur im C++-Modus erlaubt. Der Compiler unterstützt C++-Code gemäß dem C++-Standard von 2020. Eine volle Unterstützung der C++ 2020-Bibliothek ist aktuell nicht verfügbar, statt dessen wird die existierende C++ 2017-Bibliothek verwendet.__cplusplus
hat den Wert 202002L und __STDC_VERSION__
den Wert 199409L.
-X V2-COMPATIBLE
-X v2-compatible
Cfront-C++ Modus
Diese Option ist nur im C++-Modus erlaubt. Dieser Modus wird aus Gründen der Kompatibilität angeboten und sollte nicht für Neuentwicklungen verwendet werden. Es werden die C++-Sprachmittel des Cfront V3.0.3 unterstützt. Cfront V3.0.3 wurde erstmals mit dem C++-Compiler V2.1 freigegeben. Es steht die Cfront-kompatible C++-Bibliothek für komplexe Mathematik und stromorientierte Ein-/Ausgabe zur Verfügung.
Zur Cfront-C++-Bibliothek siehe auch C/C++-Benutzerhandbuch [4].
C++-Quellen müssen mit -X v2-compatible
übersetzt und gebunden werden, wenn die Objekte mit C++-V2.1/V2.2-Objekten verknüpfbar sein sollen.
Diese Angabe entspricht der Angabe -X d
des C/C++ V3-Compilers._cplusplus
hat den Wert 1 und __STDC_VERSION
den Wert 199409L. Die Option -X strict hat keinen Effekt, d.h. es gilt immer -X nostrict.
-X V3-COMPATIBLE
-X v3-compatible
C++ V3- Modus
Diese Option ist nur im C++-Modus erlaubt. Der Compiler unterstützt C++-Code entsprechend dem C/C++ V3-Compiler. Die Angabe entspricht der Angabe -X w
bzw. -X e
des C/C++ V3-Compilers.
Folgende C++-Bibliotheken stehen zur Verfügung:
die Standard-C++-Bibliothek (Strings, Containers, Iterators, Algorithms, Numerics) inklusive der Cfront-kompatiblen Ein-/Ausgabe-Klassen
die C++-V3-Bibliothek Tools.h++
Zu den C++-Bibliotheken siehe auch C/C++-Benutzerhandbuch [4].
__cplusplus
hat den Wert 2 (für -X nostrict
) bzw. 199612L (für -X strict
) und __STDC_VERSION
den Wert 199409L.
-X strict
Strikter C- bzw. C++-Modus
Der Namensraum ist auf die im Standard definierten Namen beschränkt, und es stehen nur die im Standard definierten C- bzw. C++-Bibliotheksfunktionen zur Verfügung. Bestimmte Erweiterungen (wie das Schlüsselwort asm
) und einige erwartete Prototyp-Deklarationen aus den Standard-Includes (stdio.h, stdlib.h etc.) sind nicht verfügbar.
Abweichungen vom Standard führen zu Compilermeldungen (zumeist Warnings). Durch Angabe der Option -R strict_errors
(Siehe "Optionen zur Steuerung der Meldungsausgabe") kann im Falle von Standard-Abweichungen die Ausgabe von Errors erzwungen werden.__STDC__
hat den Wert 1, _STRICT_STDC
ist definiert.
-X nostrict
Erweiterter C- bzw. C++-Modus
Einige erforderliche Compilermeldungen entfallen, der Namensraum ist nicht auf Namen beschränkt, die vom Standard spezifiziert sind, und einige Erweiterungen sind enthalten.__STDC__
hat den Wert 0, _STRICT_STDC
ist nicht definiert.
-K library_version=n
-K library_version=high
Diese Option legt die Bibliotheks-Version für die Sprachmodi C++ 2017 und C++ 2020 fest.
Die Bibliotheks-Version beeinflusst die Quelle von Include-Dateien und Resolve-Bibliotheken. Bei Bibliotheks-Version 1 sind es /usr/include/CXX01
und SYSLNK.CRTE.CXX01
, bei Bibliotheks-Version 2 sind es /usr/include/CXX02
und SYSLNK.CRTE.CXX02
.
Zu Details siehe das C/C++ Benutzerhandbuch [4].