On this page
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:
  | 
     
The following tokens are recognized by the preprocessor when they are used outside the context of a preprocessor directive:
  | 
     
The following additional keywords are classified as extensions and conditionally-supported:
References
- C23 standard (ISO/IEC 9899:2023):
 - 6.4.1 Keywords (p: TBD)
 - J.5.9 The fortran keyword (p: TBD)
 - J.5.10 The asm keyword (p: TBD)
 - 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
 
See also
| C++ documentation for C++ keywords | 
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
 https://en.cppreference.com/w/c/keyword