C++ 带两组括号的Typedef?
我在一些代码中遇到了一个typedef,它是这样的:C++ 带两组括号的Typedef?,c++,C++,我在一些代码中遇到了一个typedef,它是这样的: typedef void (NE_API *NeWindowProcCallback)(void* hWnd, NEuint uMsgId, NEuint wParam, NEuint64 lParam); 但是,我不熟悉这种语法。有人能解释一下吗 此外,如果我跳转到NE_API的声明,我会发现: # define NE_API __stdcall 我认为这可能与答案有关,对此的解释也将非常感谢。谢谢。这是函数指针的typedef,函
typedef void (NE_API *NeWindowProcCallback)(void* hWnd, NEuint uMsgId, NEuint wParam, NEuint64 lParam);
但是,我不熟悉这种语法。有人能解释一下吗
此外,如果我跳转到NE_API的声明,我会发现:
# define NE_API __stdcall
我认为这可能与答案有关,对此的解释也将非常感谢。谢谢。这是函数指针的typedef,函数返回
void
,具有\uu stdcall
调用约定,并接受四个参数。因此,您可以将具有此签名的任何函数的地址分配给NeWindowProcCallback
类型的变量。然后,可以将此变量作为参数传递给需要回调函数的其他函数。有关如何使用函数指针的更多详细信息,请参阅。您可以在此处查看stdcall的内容:
至于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
}
NeWindowProcCallback
是函数指针的类型。它接受参数void*hWnd、NEuint uMsgId、NEuint wParam、NEuint64 lParam
,并返回void
\uu stdcall
是,它决定了在生成的调用程序集代码中应该如何传递参数。typedef将NeWindowProcCallback定义为一种类型,该类型存储指向返回void的函数的指针,并将(void*hWnd、NEuint uMsgId、NEuint wParam、NEuint64 lParam)作为参数