为什么微软定义WINAPI、CALLBACK、APIENTRY都指向__stdcall?

Aar*_*ron 7 c macros winapi stdcall

对于曾为负责定义这些宏的 Microsoft 团队工作过、认识为其工作过的人或以其他方式与 Microsoft 团队有任何联系的任何人来说,这是一个好奇的问题。

我明白__stdcall是什么,我知道为什么使用它,我只是不明白为什么微软会为同一件事制作三个单独的宏。我能看到的唯一好处是在源文件中提供一些语义含义,但除此之外,据我所知,它没有提供其他好处。显然这样做是有道理的,我只是想知道它是什么!:)

oog*_*oga 7

对于用于提供语义信息的不同宏,您似乎是正确的。MSDN 是这样说的CALLBACK

CALLBACK、WINAPI 和 APIENTRY 都用于定义具有 __stdcall 调用约定的函数。Windows API 中的大多数函数都是使用 WINAPI 声明的。您可能希望对您实现的回调函数使用 CALLBACK,以帮助将该函数标识为回调函数。

双方WINAPIAPIENTRY说是:

系统函数的调用约定。

我不知道为什么系统函数有两个宏。