# C keywords

From cppreference.com
< c

This is a list of reserved keywords in C. Since they are used by the language, these keywords are not available for re-definition.

`auto`
`break`
`case`
`char`
`const`
`continue`
`default`
`do`
`double`
`else`
`enum`
`extern`

`float`
`for`
`goto`
`if`
`inline` (since C99)
`int`
`long`
`register`
`restrict` (since C99)
`return`
`short`

`signed`
`sizeof`
`static`
`struct`
`switch`
`typedef`
`union`
`unsigned`
`void`
`volatile`
`while`

`_Alignas` (since C11)
`_Alignof` (since C11)
`_Atomic` (since C11)
`_Bool` (since C99)
`_Complex` (since C99)
`_Generic` (since C11)
`_Imaginary` (since C99)
`_Noreturn` (since C11)
`_Static_assert` (since C11)
`_Thread_local` (since C11)

The most common keywords that begin with an underscore are generally used through their convenience macros:

keyword | used as | defined in
`_Alignas` (since C11) | `alignas` | `stdalign.h`
`_Alignof` (since C11) | `alignof` | `stdalign.h`
`_Atomic` (since C11) | `atomic_bool. atomic_int, ...` | `stdatomic.h`
`_Bool` (since C99) | `bool` | `stdbool.h`
`_Complex` (since C99) | `complex` | `complex.h`
`_Generic` (since C11) | (no macro) |
`_Imaginary` (since C99) | `imaginary` | `complex.h`
`_Noreturn` (since C11) | `noreturn` | `stdnoreturn.h`
`_Static_assert` (since C11) | `static_assert` | `assert.h`
`_Thread_local` (since C11) | `thread_local` | `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:

`if` `elif` `else` `endif` `defined` | `ifdef` `ifndef` `define` `undef` | `include` `line` `error` `pragma`

The following tokens are recognized by the preprocessor when they are used outside the context of a preprocessor directive:

`_Pragma`(since C99)

The following additional keywords are conditionally-supported:

`asm` `fortran`

### References

- C11 standard (ISO/IEC 9899:2011):

  - 6.4.1 Keywords (p: 58-59)

- C99 standard (ISO/IEC 9899:1999):

  - 6.4.1 Keywords (p: 50)

- C89/C90 standard (ISO/IEC 9899:1990):

  - 3.1.1 Keywords

### See also

C++ documentation for C++ keywords

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=c/keyword&oldid=78259"