命名空间
变体
操作

C 关键字

来自 cppreference.cn
< c

这是 C 语言中的保留关键字列表。由于它们被语言使用,这些关键字不能被重新定义。作为例外,它们在属性标记中不被视为保留(自 C23 起)

alignas (C23)
alignof (C23)
auto
bool (C23)
break
case
char
const
constexpr (C23)
continue
default
do
double
else
enum

extern
false (C23)
float
for
goto
if
inline (C99)
int
long
nullptr (C23)
register
restrict (C99)
return
short
signed

sizeof
static
static_assert (C23)
struct
switch
thread_local (C23)
true (C23)
typedef
typeof (C23)
typeof_unqual (C23)
union
unsigned
void
volatile
while

_Alignas (C11)(在 C23 中已弃用)
_Alignof (C11)(在 C23 中已弃用)
_Atomic (C11)
_BitInt (C23)
_Bool (C99)(在 C23 中已弃用)
_Complex (C99)
_Decimal128 (C23)
_Decimal32 (C23)
_Decimal64 (C23)
_Generic (C11)
_Imaginary (C99)
_Noreturn (C11)(在 C23 中已弃用)
_Static_assert (C11)(在 C23 中已弃用)
_Thread_local (C11)(在 C23 中已弃用)

以单下划线开头的最常见关键字通常通过它们的便捷宏使用

关键字 用作 定义于
_Alignas (C11)(在 C23 中已弃用) alignas (在 C23 中移除) stdalign.h
_Alignof (C11)(在 C23 中已弃用) alignof (在 C23 中移除) stdalign.h
_Atomic (C11) atomic_bool, atomic_int, ... stdatomic.h
_BitInt (C23) (无宏)
_Bool (C99)(在 C23 中已弃用) bool (在 C23 中移除) stdbool.h
_Complex (C99) complex complex.h
_Decimal128 (C23) (无宏)
_Decimal32 (C23) (无宏)
_Decimal64 (C23) (无宏)
_Generic (C11) (无宏)
_Imaginary (C99) imaginary complex.h
_Noreturn (C11)(在 C23 中已弃用) noreturn stdnoreturn.h
_Static_assert (C11)(在 C23 中已弃用) static_assert (在 C23 中移除) assert.h
_Thread_local (C11)(在 C23 中已弃用) thread_local (在 C23 中移除) threads.h

某些关键字已弃用,并保留为替代拼写以保持兼容性。它们可以在关键字可以使用的任何地方使用。

关键字 替代拼写
alignas (C23) _Alignas (C11)(在 C23 中已弃用)
alignof (C23) _Alignof (C11)(在 C23 中已弃用)
bool (C23) _Bool (C99)(在 C23 中已弃用)
static_assert (C23) _Static_assert (C11)(在 C23 中已弃用)
thread_local (C23) _Thread_local (C11)(在 C23 中已弃用)

未指定这些关键字、它们的替代形式或 truefalse 的任何拼写是否实现为预定义宏。

每个以双下划线 __ 或以单下划线 _ 后跟大写字母开头的名称都是保留的:详见标识符

请注意,三字符组 <%, %>, <:, :>, %:, 和 %:%: 提供了一种表示标准标记的替代方式

当它们在预处理器指令的上下文使用时,预处理器会识别以下标记

if
elif
else
endif

ifdef
ifndef
elifdef (C23)
elifndef (C23)
define
undef

include
embed (C23)
line
error
warning (C23)
pragma

defined
__has_include (C23)
__has_embed (C23)
__has_c_attribute (C23)

当它们在预处理器指令的上下文之外使用时,预处理器会识别以下标记

_Pragma (C99)

以下附加关键字被归类为扩展并有条件地支持

asm
fortran

[编辑] 参考

  • C23 标准 (ISO/IEC 9899:2024)
  • 6.4.1 关键字 (p: 待定)
  • J.5.9 fortran 关键字 (p: 待定)
  • J.5.10 asm 关键字 (p: 待定)
  • C17 标准 (ISO/IEC 9899:2018)
  • 6.4.1 关键字 (p: 42-43)
  • J.5.9 fortran 关键字 (p: 422)
  • J.5.10 asm 关键字 (p: 422)
  • C11 标准 (ISO/IEC 9899:2011)
  • 6.4.1 关键字 (p: 58-59)
  • J.5.9 fortran 关键字 (p: 580)
  • J.5.10 asm 关键字 (p: 580)
  • C99 标准 (ISO/IEC 9899:1999)
  • 6.4.1 关键字 (p: 50)
  • J.5.9 fortran 关键字 (p: 514)
  • J.5.10 asm 关键字 (p: 514)
  • C89/C90 标准 (ISO/IEC 9899:1990)
  • 3.1.1 关键字
  • G.5.9 fortran 关键字
  • G.5.10 asm 关键字

[编辑] 参见

C++ 文档,关于C++ 关键字