命名空間
變體
動作

C 語言關鍵字

出自 cppreference.com
< 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 是否實作為預定義巨集,皆為未定義行為。

任何以雙底線 __ 開頭,或以底線 _ 後接大寫字母開頭的名稱皆為保留字:詳細資訊請參閱 識別碼 (identifier)

請注意,雙元字元 (digraphs) <%, %>, <:, :>, %:%:%: 提供了表示標準符號的替代方式

當下列符號在預處理器指令的範圍內使用時,會被預處理器識別

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++ 關鍵字
English Deutsch 日本語 中文(简体) 中文(繁體)