-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.
-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: |
|
| sedezimale Escape-Sequenzen: |
|
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.