分享方式:


C 關鍵字

「關鍵字」是指對 C 編譯器有特殊意義的字詞。 在轉譯階段 7 和 8 中,識別項不能包含與 C 關鍵字相同的拼字和大小寫。 如需詳細資訊,請參閱前置處理器參考中的翻譯階段。 如需識別碼的詳細資訊,請參閱識別碼

標準 C++ 關鍵字

C 語言使用下列關鍵字:

auto
break
case
char
const
continue
default
do
double
else
enum

extern
float
for
goto
if
inline 1, a
int
long
register
restrict 1, a
return

short
signed
sizeof
static
struct
switch
typedef
typeof
typeof_unqual
union
unsigned
void
volatile

while
_Alignas 2, a
_Alignof 2, a
_Atomic 2, b
_Bool 1, a
_Complex 1, b
_Generic 2, a
_Imaginary 1, b
_Noreturn 2, a
_Static_assert 2, a
_Thread_local 2, b

1 ISO C99 中引進的關鍵字。
2 ISO C11 中引進的關鍵字。
a 從 Visual Studio 2019 16.8 版開始,當指定 /std:c11/std:c17 編譯器選項時,編譯為 C 的程式碼中支援這些關鍵字。
b 從 Visual Studio 2019 16.8 版開始,當指定 /std:c11/std:c17 編譯器選項時,編譯器會在編譯為 C 的程式碼中辨識這些關鍵字,但不提供支援。

您無法重新定義關鍵字。 不過,您可以在編譯前,使用 C 前置處理器指示詞指定要取代關鍵字的文字。

Microsoft 特定 C 關鍵字

ANSI 和 ISO C 標準允許保留具有兩個前置底線的識別項,供編譯器實作使用。 Microsoft 的慣例就是在 Microsoft 專有關鍵字名稱前面加上雙底線。 這些字詞不可做為識別碼名稱使用。 如需命名識別碼的規則描述,包括使用雙底線,請參閱識別碼

Microsoft C 編譯器可辨識下列關鍵字和特殊識別項:

__asm5
__based3, 5
__cdecl5
__declspec5
__except5
__fastcall
__finally5

__inline5
__int165
__int325
__int645
__int85
__leave5
__restrict

__stdcall5
__try5
__typeof__
__typeof_unqual__
dllexport4
dllimport4
naked4
static_assert6
thread4

3 __based 關鍵字對 32 位元和 64 位元目標編譯的使用有限。
4 這些是搭配 __declspec 使用時的特殊識別項,在其他內容中使用則不受限制。
5 為了與舊版相容,這些關鍵字在啟用 Microsoft 擴充功能時可以使用兩個前置底線和單一前置底線。
6 如果您未包含 <assert.h>,Microsoft Visual C 編譯器會將 static_assert 對應至 C11 _Static_assert 關鍵字。

Microsoft 擴充功能預設為啟用。 為了協助建立可攜式程式碼,您可以在編譯期間指定 /Za (停用語言擴充功能) 選項來停用 Microsoft 擴充功能。 當您使用這個選項時,某些 Microsoft 專有關鍵字就會停用。

在 Microsoft 擴充功能啟用時,您可以在程式中使用上面所列的關鍵字。 為了符合語言標準,這些關鍵字大部分有前置雙底線。 這四個例外狀況 (dllexportdllimportnakedthread) 只能搭配 __declspec 使用,而不需要前置雙底線。 為了提供回溯相容性,仍支援其餘關鍵字的單一底線版本。

另請參閱

C 的元素