### Keywords in C and C++

Keywords are identifiers reserved by the language for special use. Although you can use them for preprocessor macro names, it is poor programming practice. Only the exact spelling of keywords is reserved (recall, C++ is case sensitive therefore auto is not the same as AUTO).

Keywords Common in C and C++
auto | break | case | char | const | continue
default | do | double | else | enum | extern
float | for | goto | if | int | long
register | return | short | signed | sizeof | static
struct | switch | typedef | union | unsigned | void
volatile | while |  |  |  |

There are also a set of keywords that are specific to the C++ language:

Keywords for C++ only
asm | bool | catch | class | const_cast
delete | dynamic_cast | explicit | false | friend
inline | mutable | namespace | new | operator
private | protected | public | reinterpret_cast | static_cast
template | this | throw | true | try
typeid | typename | virtual | using | wchar_t

The IBM C and C++ Compilers also reserves the following keywords. They are IBM C and C++ Compilers extensions to the existing language standards.

Additional IBM C and C++ Compilers Keywords
_Builtin | __builtin | _Cdecl | __cdecl | __declspec | _Export
__export | __except | _Far16 | __far16 | _Far32 | __far32
_Fastcall | __fastcall | __finally | _Import | __import | __int64
_Inline | __inline | __int8 | __int16 | __int32 | __leave
_Optlink | __optlink | _Pascal | __pascal | _Packed | __packed
__stdcall | _System | __system | __thread | __try | __unaligned

There are also keywords that are reserved for C only:

Keywords for C only
_Far32 | __far32 | _Inline | __inline
_Packed | __packed | _Pascal | _Far32 _Pascal
_Far16 _Cdecl | _Far16 _Pascal | _Far16 _Fastcall | __except
__finally | __leave | __try | _inline

The following keywords are reserved for Microsoft Visual C++ compatibility:

Keywords for Microsoft Visual C++ Compatibility
_asm | __asm | _cdecl | _declspec
_except | _finally | _inline | _int8
_int16 | _int32 | _int64 | _leave
_stdcall | _try |  |