C keywords
This is a list of reserved keywords in C. Since they are used by the language, these keywords are not available for re-definition. As an exception, they are not considered reserved in attribute-tokens (since C23)
|
|
|
|
|
The most common keywords that begin with an underscore are generally used through their convenience macros:
| keyword | used as | defined in |
_Alignas (C11) |
alignas (removed in C23) | stdalign.h |
_Alignof (C11) |
alignof (removed in C23) | stdalign.h |
_Atomic (C11) |
atomic_bool, atomic_int, ... | stdatomic.h |
_BitInt (C23) |
(no macro) | |
_Bool (C99) |
bool (removed in C23) | stdbool.h |
_Complex (C99) |
complex | complex.h |
_Decimal128 (C23) |
(no macro) | |
_Decimal32 (C23) |
(no macro) | |
_Decimal64 (C23) |
(no macro) | |
_Generic (C11) |
(no macro) | |
_Imaginary (C99) |
imaginary | complex.h |
_Noreturn (C11) |
noreturn | stdnoreturn.h |
_Static_assert (C11) |
static_assert (removed in C23) | assert.h |
_Thread_local (C11) |
thread_local (removed in C23) | threads.h |
Also, each name that begins with a double underscore __ or an underscore _ followed by an uppercase letter is reserved: see identifier for details.
Note that digraphs <%, %>, <:, :>, %:, and %:%: provide an alternative way to represent standard tokens.
The following tokens are recognized by the preprocessor when they are used within the context of a preprocessor directive:
|
defined |
The following tokens are recognized by the preprocessor when they are used outside the context of a preprocessor directive:
|
_Pragma (C99) |
The following additional keywords are classified as extensions and conditionally-supported:
References
- C17 standard (ISO/IEC 9899:2018):
-
- 6.4.1 Keywords (p: 42-43)
-
- J.5.9 The fortran keyword (p: 422)
-
- J.5.10 The asm keyword (p: 422)
- C11 standard (ISO/IEC 9899:2011):
-
- 6.4.1 Keywords (p: 58-59)
-
- J.5.9 The fortran keyword (p: 580)
-
- J.5.10 The asm keyword (p: 580)
- C99 standard (ISO/IEC 9899:1999):
-
- 6.4.1 Keywords (p: 50)
-
- J.5.9 The fortran keyword (p: 514)
-
- J.5.10 The asm keyword (p: 514)
- C89/C90 standard (ISO/IEC 9899:1990):
-
- 3.1.1 Keywords
-
- G.5.9 The fortran keyword
-
- G.5.10 The asm keyword