They cannot be used as variable names, function names, or identifiers. Below is a list of keywords in standard C (C89/90, C99, C11):
if
else
switch
case
default
for
while
do
break
continue
int
float
double
char
void
short
long
signed
unsigned
auto
register
static
extern
typedef
const
volatile
_Atomic (C11)
sizeof
return
struct
union
enum
goto
_Bool (C99)
_Complex (C99)
_Imaginary (C99)
_Thread_local
_Static_assert
_Alignas
_Alignof
_Noreturn
Keywords may vary slightly depending on the compiler and standard being used (e.g., C89, C99, or C11).
_-prefixed keywords (e.g., _Bool, _Thread_local) are introduced in newer standards and should be used with care for compatibility.