標準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
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 編譯器識別:
__asm 5
__based 3, 5
__cdecl 5
__declspec 5
__except 5
__fastcall
__finally 5
__inline 5
__int16 5
__int32 5
__int64 5
__int8 5
__leave 5
__restrict
__stdcall 5
__try 5
dllexport 4
dllimport 4
naked 4
static_assert 6
thread 4
3 __based 關鍵字對 32 位和 64 位目標編譯的用途有限。
4 當與 __declspec 一起使用時,這些關鍵字是特殊的標識符;它們在其他情況下的使用不受限制。
5 為了與以前的版本兼容,當啟用 Microsoft 擴展時,這些關鍵字既可以使用兩個前導下劃線,也可以使用一個前導下劃線。
6 如果不包括 <assert.h>,則 Microsoft Visual C 編譯器會將 static_assert 映射到 C11 _Static_assert 關鍵字 。
默認情況下將啟用 Microsoft 擴展。 為了幫助創建可移植的代碼,可以在編譯過程中指定 /Za (禁用語言擴展) 選項來禁用 Microsoft 擴展。 如果使用此選項,將禁用某些 Microsoft 專用關鍵字。
啟用 Microsoft 擴展時,您可在程序中使用上面列出的關鍵字。 為了符合標準,這些關鍵字大多使用前導雙下劃線。 dllexport、dllimport、naked 和 thread 這 4 個關鍵字除外,它們只與 __declspec 一起使用,不需要前導雙下劃線。 為了向后兼容,支持其余的關鍵字的單下劃線版本。