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
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
__typeof__
__typeof_unqual__
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
一起使用,不需要前导双下划线。 为了向后兼容,支持其余的关键字的单下划线版本。