Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Gemeinsame Frontend-Optionen in C und C++

&pagelevel(4)&pagelevel

-K arg1[,arg2...]

Allgemeine Eingaberegeln zur -K-Option finden Sie im Abschnitt "Aufruf-Syntax und allgemeine Regeln".
Als Argumente arg zur Steuerung des Compiler-Frontends in den C- und C++-Sprachmodi sind folgende Angaben möglich:

uchar
schar

Der Datentyp char ist standardmäßig vom Typ unsigned char. Bei Angabe von -K schar wird char in Ausdrücken und Konversionen als signed char behandelt. Bei Verwendung dieser Option können Portabilitätsprobleme auftreten!

at
no_at

Bei Angabe von -K no_at ist in Bezeichnern das at-Zeichen ’@’ nicht erlaubt.
-K at ist voreingestellt. Das at-Zeichen in Bezeichnern ist eine Erweiterung gegenüber dem Standard.


Bei Nutzung der Cfront-C++-Bibliothek darf die Option -K no_at nicht verwendet werden.


dollar
no_dollar

Bei Angabe von -K no_dollar ist in Bezeichnern das Dollar-Zeichen ’$’ nicht erlaubt.
-K dollar ist voreingestellt. Das Dollar-Zeichen in Bezeichnern ist eine Erweiterung gegenüber dem Standard.

literal_encoding_native
literal_encoding_ascii
literal_encoding_ascii_full
literal_encoding_ebcdic
literal_encoding_ebcdic_full

Diese Option legt fest, ob der C/C++-Compiler Code für Zeichen und Zeichenketten im EBCDIC- oder im ASCII-Format (ISO 8859-1) erzeugt.
In C/C++ können Zeichenketten binär codierte Zeichen als oktale oder sedezimale Escape-Sequenzen mit folgender Syntax enthalten.

-

oktale Escape-Sequenzen:

'\[0-7] [0-7] [0-7]'

-

sedezimale Escape-Sequenzen:

'\x[0-9A-F] [0-9A-F]'

Ob der C/C++-Compiler Escape-Sequenzen in das ASCII-Format konvertiert oder nicht, hängt von der verwendeten literal_encoding_...-Option ab.

literal_encoding_native
Der C/C++-Compiler belässt Code für Zeichen und Zeichenketten im EBCDIC-Format, d.h. er übernimmt die Zeichen(ketten) unkonvertiert in den Objektcode. literal_encoding_native ist Voreinstellung.

literal_encoding_ascii
Der C/C++-Compiler erzeugt Code für Zeichen und Zeichenketten im ASCII-Format. In den Zeichenketten enthaltene Escape-Sequenzen werden nicht in das ASCII-Format konvertiert.

literal_encoding_ascii_full
Der C/C++-Compiler erzeugt Code für Zeichen und Zeichenketten im ASCII-Format. In den Zeichenketten enthaltene Escape-Sequenzen werden ebenfalls in das ASCII-Format konvertiert.

literal_encoding_ebcdic
Der C/C++-Compiler belässt Code für Zeichen und Zeichenketten im EBCDIC-Format, d.h. er übernimmt die Zeichen(ketten) unkonvertiert in den Objektcode. literal_encoding_ebcdic hat somit dieselbe Wirkung wie literal_encoding_ebcdic_full oder literal_encoding_native.

literal_encoding_ebcdic_full
Der C/C++-Compiler belässt Code für Zeichen und Zeichenketten im EBCDIC-Format, d.h. er übernimmt die Zeichen(ketten) unkonvertiert in den Objektcode. literal_encoding_ebcdic_full hat somit dieselbe Wirkung wie literal_encoding_ebcdic oder literal_encoding_native.

Voraussetzungen für die ASCII-Unterstützung:

  • Sie dürfen die C-Bibliotheksfunktionen in Ihrem Quellprogramm nicht explizit deklarieren, sondern nur indirekt via Inkludieren des entsprechenden CRTE-Headers. Andernfalls kann es zum Übersetzungsfehler ‘CFE1079[ERROR]..: Typangabe erwartet / expected a type specifier‘ kommen.
  • Inkludieren Sie für jede in Ihrem Programm verwendete CRTE-Funktion (C-Bibliotheksfunktion), die mit Zeichenketten arbeitet, die passende bzw. dazugehörige Include-Datei. Andernfalls können diese Funktionen Zeichenketten nicht korrekt verarbeiten. Insbesondere müssen Sie für die Funktion printf() die Include-Datei <stdio.h> mit #include <stdio.h> inkludieren.

  • Für die Verwendung von CRTE-Funktionen müssen zusätzlich die folgenden Optionen angegeben werden:


-K llm_keep
-K llm_case_lower


signed_fields_signed
signed_fields_unsigned

Bei Angabe von -K signed_fields_unsigned sind signed Bitfelder immer vom Typ unsigned. Diese Option wird aus Kompatibilitätsgründen zu älteren C-Versionen angeboten und ist nur im K&R-C-Modus sinnvoll.
-K signed_fields_signed ist voreingestellt.

plain_fields_signed
plain_fields_unsigned

Diese Argumente steuern, ob Integer-Bitfelder (short, int, long, long long) standardmäßig vom Typ signed oder unsigned sind.
-K plain_fields_signed ist voreingestellt.

long_preserving
unsigned_preserving

Diese Argumente steuern, ob das Ergebnis von arithmetischen Operationen mit Operanden vom Typ long und unsigned int, gemäß K&R (erste Ausgabe, Anhang 6.6) vom Typ long ist (long_preserving) oder gemäß ANSI-/ISO-C vom Typ unsigned long (unsigned_preserving).
-K unsigned_preserving ist voreingestellt.

alternative_tokens
no_alternative_tokens

Diese Argumente steuern, ob der Compiler alternative Tokens erkennen soll:

in den C- und C++-Sprachmodi Digraph-Sequenzen (z.B. <: für [),
nur in den C++-Sprachmodi zusätzliche Schlüsselwort-Operatoren (z.B. and für &&, bitand für &).

In den Modi C11, C++ V3, C++ 2017 und C++ 2020 ist -K alternative_tokens voreingestellt, in allen anderen Sprachmodi -K no_alternative_tokens.

longlong
no_longlong

Diese Argumente steuern, ob der Datentyp long long vom Compiler erkannt wird. -K longlong ist voreingestellt. In diesem Fall wird das Präprozessor-Define _LONGLONG gesetzt.
Bei Angabe von -K no_longlong führt der Gebrauch des Datentyps long long zu einem Fehler. Diese Angabe ist nur im strikten C89-Modus und im strikten C++ V3-Modus zulässig.

end_of_line_comments
no_end_of_line_comments

Diese Argumente steuern, ob der Compiler C++-Kommantare (//...) im erweiterten C89-Modus akzeptiert. -K no_end_of_line_comments ist im erweiterten C89-Modus voreingestellt.

In den anderen Sprachmodi ist jeweils nur eine Angabe erlaubt, die andere wird mit einer Warnung ignoriert. Im strikten C89-Modus und im K&R-C-Modus sind C++-Kommentare nicht erlaubt, in den C++-Modi und im C11-Modus sind sie immer erlaubt.