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
inline
1, a
int
long
register
restrict
1, a
return
short
signed
sizeof
static
struct
switch
typedef
typeof
typeof_unqual
union
unsigned
void
volatile
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:c11
oder/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:
__asm
5
__based
3, 5
__cdecl
5
__declspec
5
__except
5
__fastcall
__finally
5
__inline
5
__int16
5
__int32
5
__int64
5
__int8
5
__leave
5
__restrict
__stdcall
5
__try
5
__typeof__
__typeof_unqual__
dllexport
4
dllimport
4
naked
4
static_assert
6
thread
4
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. Um das Erstellen von portierbarem Code zu erleichtern, können Sie Microsoft-Erweiterungen deaktivieren, indem Sie beim Kompilieren die Option /Za (Spracherweiterungen deaktivieren) 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. Zur Einhaltung des Sprachstandards wird den meisten dieser Schlüsselwörter ein doppelter Unterstrich vorangestellt. 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.