我在某些代码中遇到过typedef:
typedef void (NE_API *NeWindowProcCallback)(void* hWnd, NEuint uMsgId, NEuint wParam, NEuint64 lParam);
但是,我不熟悉这种语法。任何人都能解释一下吗?
另外,如果我跳到NE_API的声明,我会发现:
# define NE_API __stdcall
我认为这可能与答案有关,对此的解释也将非常感激。谢谢。
答案 0 :(得分:5)
这是函数指针的typedef,函数返回void
,具有__stdcall
调用约定,并接受四个参数。因此,您可以将具有此签名的任何函数的地址分配给类型为NeWindowProcCallback
的变量。然后,可以将此变量作为参数传递给期望回调函数的其他函数。有关如何使用函数指针的更多详细信息,请参阅this。
答案 1 :(得分:1)
你可以看到__stdcall在这里: What is __stdcall? 至于typedef - 这是typedef函数的方法。现在类型NeWindowProcCallback将是一个指向带参数类型的函数的指针(void * hWnd,NEuint uMsgId,NEuint wParam,NEuint64 lParam)。
所以你可以这样做:
void foo(void* hWnd, NEuint uMsgId, NEuint wParam, NEuint64 lParam);
int main() {
NeWindowProcCallback my_func = foo;
....
// use the pointer
}
答案 2 :(得分:1)
NeWindowProcCallback
是函数指针的类型。它采用参数void* hWnd, NEuint uMsgId, NEuint wParam, NEuint64 lParam
,并返回void
。
__stdcall
是calling convention,它确定如何在生成的调用汇编代码中传递参数。
答案 3 :(得分:0)
typedef将 NeWindowProcCallback 定义为存储指向返回 void 的函数的指针的类型(void * hWnd,NEuint uMsgId,NEuint wParam,NEuint64 lParam)作为参数