My Labs! C++

Work is Worth Doing of Worth Doing Well.

关键字是对于 C 编译器拥有特殊意义的单词。在转译的第 7 和第 8 阶段,标识符不可以拥有与 C 关键字相同的拼写和大小写。(参考[预处理器参考]转译阶段部分的描述。)C 语言使用了下列关键字:

autodoubleintstruct
breakelselongswitch
caseenumregistertypedef
charexternreturnunion
constfloatshortunsigned
continueforsignedvoid
defaultgotosizeofvolatile
doifstaticwhile

你不能重定义关键字。但是,你可以在通过使用 C 预处理器指令进行编译之前指定文字来作为关键字的替代。

Microsoft 特定

ANSI C 标准允许标识符冠以两个下划线来预留编译器实现。因此,Microsoft 约定以两个下划线作为 Microsoft 特定的关键名称前缀。这些单词不可以当作标识符名称来使用。关于 ANSI 规则中关于标识符命名的描述,包括双下划线的使用,参考[标识符]。

下列关键字和特殊标识符是被 Microsoft C 编译器所认可的:

__asmdllimport2__int8naked2
__base1__except__int16__stdcall
__cdecl__fastcall__int32thread2
__declspec__finally__int64__try
__dllexport2__inline__leave
  1. 关键字 __based 需要在 32 位的目标编译中被限制使用。
  2. 以 __declspec 而被使用的都是特殊的标识符;其他环境中对于它们的使用是无限制的。

Microsoft 扩展在默认时是被启用的。要确保你的程序完全可移植,你就可以在编译期间通过指定 /Za 选项(为 ANSI 兼容而编译)来禁用 Microsoft 扩展。当你这样做的时候,Microsoft 特定的关键字就被禁用。

当 Microsoft 扩展被启用的时候,你就可以在你的程序中使用前面所列表的关键字。关于 ANSI 的遵循,这些关键字的多数都被冠以双下划线。只有四个例外:dllexport、dllimport,naked 和 thread 只以 __declspec 才会被使用,因此不需要冠以双下划线。关于后向兼容,关键字测试的单下划线版本是被支持的。

结束 Microsoft 特定
posted on 2007-03-19 17:49 Laeb 阅读(2118) 评论(0)  编辑 收藏 引用 所属分类: C 语言参考 / C 关键字