为什么windows.h中的数据类型有CALLBACK?
如何使用它?
其他数据类型有什么区别?
https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx
答案 0 :(得分:1)
答案就在您链接到的页面中:
CALLBACK,WINAPI和APIENTRY都用于定义函数 __stdcall调用约定。 Windows API中的大多数功能 使用WINAPI声明。您可能希望使用CALLBACK 您实现的回调函数,以帮助将函数标识为 回调函数。
在32位Windows x86计算机上有多个calling conventions,但最常见的两个是stdcall和cdecl。 Windows API中的大多数函数都是stdcall,C标准库中的函数是cdecl。
Windows SDK中的大多数公共函数使用WINAPI定义,而您或库创建的回调函数通常使用CALLBACK定义。它们最终都声明该函数正在使用stdcall调用约定,并且生成的代码是相同的。 CALLBACK定义用于提醒您,程序员,这个特定的函数是一个回调函数。