c函数中WINAPI标记的正确名称是什么?

时间:2010-12-18 18:36:42

标签: c winapi tags

我很难理解WINAPI标签与c的关系。

例如:

BOOL WINAPI CreateProcessA(...);

这个WINAPI标签究竟是什么,它是否有更正式的名称,是否是c或实现特定的一部分?

很抱歉,如果我的问题有点令人困惑。

非常感谢!

4 个答案:

答案 0 :(得分:4)

这是calling convention,通常定义为Windows的__stdcall

答案 1 :(得分:1)

它是一个宏,即预处理器将其替换为实际编译之前的#defined。具体来说,WINAPI宏被定义为告诉函数使用哪个调用约定。

答案 2 :(得分:1)

在标准术语中,它是存储类说明符(如“静态”),类型说明符(如“unsigned”)或类型限定符(如“const”)。差别很大,如果它是任何一种说明符,你就不能写

BOOL * WINAPI CreateProcessA(...);

但如果是限定符,你可以。无论如何,它是Windows编译器的非标准功能。

(我看到其他人已经指出实际上“WINAPI”是一个宏,但它是一个由实现提供的宏,因此你应该将它视为一种语言特性,而不是看它扩展了什么到。)

答案 3 :(得分:-1)

#define WINAPI __stdcall

这意味着CreateProcessA的参数将从左到右计算。