Far*_*rah 2 c++ pointers typedef void
我是一名Java开发人员.
我正在尝试理解一个C/C++项目,我发现它:
*.h 档案:
typedef void (*MyCallback) (MyHandle handle, void* context, MyResult result, ... );
int MyMethod(MyHandle handle, void* context, MyCallback cb);
Run Code Online (Sandbox Code Playgroud)
*.cpp 文件:
int MyMethod(MyHandle handle, void* context, MyCallback cb){
//...
}
Run Code Online (Sandbox Code Playgroud)
而我真的没有得到它的意义......
任何人都可以向我解释这是什么意思typedef void?我只使用简单的typedef来处理简单的结构......但是在这个中我可以看到一个可怕的指针(对于Java开发人员而言,抱歉指针恐惧症......).
而且,为什么我们这样做typedef ?? 我没有MyCallBack在MyMethod功能上看到任何指针.
我需要了解这段代码的含义.
非常感谢!
这个特殊的方法typedef引入了一个类型别名,命名MyCallback为"获取句柄,上下文和结果以及返回void的函数的指针".如果您将函数MyCallback作为参数,则可以将指针作为参数传递给具体的回调函数:
void someFunction(MyCallback callback);
void someCallback(MyHandle handle, void* context, MyResult result, ...);
someFunction(&someCallback);
someFunction( someCallback); // the & is optional
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用someCallback于顶级函数或静态成员函数.非静态成员函数(aka方法)是完全不同的野兽.
如果您只是被C声明符语法混淆,C++ 11允许以下替代方法:
using MyCallback = void (*)(MyHandle handle, void* context, MyResult result,...);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5502 次 |
| 最近记录: |