C-Schlüsselwörter

Schlüsselwörter sind Wörter, die für den C-Compiler eine besondere Bedeutung haben. In den Übersetzungsphasen 7 und 8 kann ein Bezeichner nicht dieselbe Schreibweise und Groß-/Kleinschreibung haben wie ein C-Schlüsselwort. Weitere Informationen erhalten Sie unter Phasen der Übersetzung in der Präprozessorreferenz. Weitere Informationen zu Bezeichnern finden Sie unter Bezeichner.

Standardschlüsselwörter in C

Die Programmiersprache C verwendet die folgenden Schlüsselwörter:

auto
break
case
char
const
continue
default
do
double
else
enum

extern
float
for
goto
if
inline1, a
int
long
register
restrict1, a
return

short
signed
sizeof
static
struct
switch
typedef
typeof
typeof_unqual
union
unsigned
void
volatile

while
_Alignas2, a
_Alignof2, a
_Atomic2, b
_Bool1, a
_Complex1, b
_Generic2, a
_Imaginary1, b
_Noreturn2, a
_Static_assert2, a
_Thread_local2, b

1 In ISO C99 eingeführte Schlüsselwörter.
2 In ISO C11 eingeführte Schlüsselwörter.
a Ab Visual Studio 2019 Version 16.8 werden diese Schlüsselwörter in C-kompiliertem Code unterstützt, wenn die Compileroption /std:c11oder/std:c17 angegeben wird.
b Ab Visual Studio 2019 Version 16.8 werden diese Schlüsselwörter in C-kompiliertem Code erkannt, aber nicht vom Compiler unterstützt, wenn die Compileroption /std:c11 oder /std:c17 angegeben wird.

Sie können Schlüsselwörter nicht neu definieren. Bevor Sie mit C-Präprozessoranweisungen kompilieren, können Sie jedoch Ersatztext für Schlüsselwörter angeben.

Microsoft-spezifische C-Schlüsselwörter

Der ANSI- und ISO-C-Standard ermöglichen, Bezeichner mit zwei vorangestellten Unterstrichen für Compilerimplementierungen zu reservieren. Daher werden gemäß Microsoft-Konvention Microsoft-spezifischen Schlüsselwortnamen doppelte Unterstriche vorangestellt. Diese Wörter können nicht als Bezeichnernamen verwendet werden. Eine Beschreibung der Regeln für die Benennung von Bezeichnern, einschließlich der Verwendung von doppelten Unterstrichen, finden Sie unter Bezeichner.

Die folgenden Schlüsselwörter und speziellen Bezeichner werden vom Microsoft C-Compiler erkannt:

__asm5
__based3, 5
__cdecl5
__declspec5
__except5
__fastcall
__finally5

__inline5
__int165
__int325
__int645
__int85
__leave5
__restrict

__stdcall5
__try5
__typeof__
__typeof_unqual__
dllexport4
dllimport4
naked4
static_assert6
thread4

3 Das __based-Schlüsselwort weist eingeschränkte Verwendung für 32-Bit- und 64-Bit-Zielkompilierungen auf.
4 Dies sind spezielle Bezeichner, wenn sie mit __declspec verwendet werden. Ihre Verwendung in anderen Kontexten ist nicht eingeschränkt.
5 Wegen der Kompatibilität mit früheren Versionen sind diese Schlüsselwörter sowohl mit zwei führenden Unterstrichen als auch mit einem einzigen führenden Unterstrich verfügbar, wenn Microsoft-Erweiterungen aktiviert sind.
6 Wenn Sie <assert.h> nicht einschließen, ordnet der Visual C-Compiler von Microsoft static_assert dem C11-Schlüsselwort _Static_assert zu.

Standardmäßig sind Microsoft-Erweiterungen aktiviert. Zum Erstellen von portablem Code können Sie Microsoft-Erweiterungen deaktivieren, indem Sie die Option /Za (Spracherweiterungen deaktivieren) während der Kompilierung angeben. Mit dieser Option werden einige Microsoft-spezifische Schlüsselwörter deaktiviert.

Wenn Microsoft-Erweiterungen aktiviert sind, können Sie in den Programmen die oben aufgeführten Schlüsselwörter verwenden. Um den Sprachstandard zu erfüllen, weisen die meisten dieser Schlüsselwort (keyword) einen führenden Doppel unterstrich auf. Die vier Ausnahmen dllexport, dllimport, naked und thread werden nur mit __declspec verwendet und erfordern deshalb keinen vorangestellten doppelten Unterstrich. Für die Abwärtskompatibilität werden die restlichen Schlüsselwörter mit Versionen mit einem Unterstrich unterstützt.

Siehe auch

C-Elemente