-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.