c++ - 回调函数和常规函数有什么区别?

标签 c++ winapi visual-c++ callback calling-convention

好的,我将给出两个函数示例,使用 CALLBACK 和常规函数。
注意:这些例子不是我写的。

常规函数

int sumExample (int a, int b)
{
    return a + b;
}
int main()
{
     int = sumExample(1, 3);
     cout  >> int;
     return 0;
}

使用 _stdcall 的函数

int __stdcall sumExample (int a, int b);

有什么区别?
注意:我不确定调用约定是如何工作的,一个例子会有所帮助!

最佳答案

基本上,调用约定指定了如何调用函数的实现细节。大多数库使用标准 C 调用约定 - __cdecl。然而,WinAPI 需要 __stdcall。您只需要了解有关调用约定的两件事:它们必须匹配,例如,您不能转换 void(*)(int, int),它隐含为 void (__cdecl *)(int, int),到 void(__stdcall *)(int, int),默认为 __cdeclCALLBACK 只是一个 WinAPI #define,因此他们可以根据需要进行更改。

关于c++ - 回调函数和常规函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4293509/

相关文章:

c++ - 为什么 MSVC 给我 'wrong' 结果?

c++ - 将一个dll文件导入另一个IDL文件

C++——FindWindow win32 API 总是失败!

c++ - C++ 中的 Win32 显示中文...我做错了什么?

c++ - 将 ptr_vector 与 malloc 一起使用

c++ - Windows Shell API 是否适用于长 Unicode 路径?

c++ - 如何更改文本字段的大小?

c++ - 如何使用 Visual Studio 2012 为 Windows XP 编译?

c++ - C++ 中的 C# Linq 表达式

c++ - 如何在 C++ 中计时事件?