“关键字”是对 C 编译器具有特殊含义的单词。 在翻译的第 7 和第 8 阶段中,标识符不能具有与 C 关键字相同的拼写和大小写。(请参阅《预处理器参考》中的翻译阶段的说明;有关标识符的信息,请参阅标识符。)C 语言使用下列关键字:
auto |
double |
int |
struct |
break |
else |
long |
switch |
case |
enum |
register |
typedef |
char |
extern |
return |
union |
const |
float |
short |
unsigned |
continue |
for |
signed |
void |
default |
goto |
sizeof |
volatile |
do |
if |
static |
while |
您不能重新定义关键字。 但是,您可在使用 C 预处理器指令编译之前指定关键字的替换文本。
Microsoft 专用
ANSI C 标准允许为了编译器实现保留带有两个前导下划线的标识符。 因此,Microsoft 约定的是在 Microsoft 专用关键字名称前放置双下划线。 这些单词不能用作标识符名称。 有关命名标识符的 ANSI 规则的描述,包括双下划线的使用,请参阅标识符。
下列关键字和特殊标识符由 Microsoft C 编译器识别:
__asm |
dllimport2 |
__int8 |
naked2 |
__based1 |
__except |
__int16 |
__stdcall |
__cdecl |
__fastcall |
__int32 |
thread2 |
__declspec |
__finally |
__int64 |
__try |
dllexport2 |
__inline |
__leave |
|
1. __based 关键字对于 32 位和 64 位目标编译的使用会受到限制。
2. 这些关键字在与 __declspec 一起使用时是特殊标识符;它们在其他上下文中的使用不受限制。
默认情况下将启用 Microsoft 扩展。 若要确保您的程序是完全可移植的,可通过在编译期间指定 /Za 选项(针对 ANSI 兼容性编译)来禁用 Microsoft 扩展。 如果这样做,将禁用 Microsoft 专用关键字。
启用 Microsoft 扩展时,您可在程序中使用上面列出的关键字。 为了兼容 ANSI,这其中大部分关键字以一个双下划线开头。 dllexport、dllimport、naked 和 thread 这 4 个关键字除外,它们仅与 __declspec 一起使用,因此无需前导双下划线。 为了向后兼容,支持其余的关键字的单下划线版本。
结束 Microsoft 专用