命名空间
变体
操作

C 关键字

来自 cppreference.cn
< c

这是 C 语言中的保留关键字列表。由于它们被语言使用,因此这些关键字不可用于重新定义。作为例外,在attribute-token中,它们不被视为保留字(自 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++ 关键字