标准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 一起使用,不需要前导双下划线 。为了向后兼容,支持其余的关键字的单下划线版本 。
【标准C语言Microsoft专用C语言关键字之间的差别】
推荐阅读
- 食品的分类及国家标准 食品的分类方法有几种
- 几乎所有的操作系统内核都是用C语言写的,你知道为什么吗?
- 飞机行李托运怎么收费标准?
- PHP“垂死”十年
- 聊聊笔记本行业中的“认证标准”
- a4腰|学生审美已被扭曲化,A4腰之后又出BM女孩标准,逐渐病态化
- vivo|天玑9000芯片+80W快充!vivo X80标准版入网:今晚价格出炉
- 世界上先有男人还是先有女人 先有男人还是先有女人的标准答案
- 小孩好久开始说话
- C语言编程中的预处理命令你会用吗?