Aam*_*mir 1 c++ typedef function-pointers
我在C++程序中有一个奇怪的typedef语句,由Py ++生成.
double radius(int); // function to be wrapped
typedef double (*radius_function_type)(int);
bp::def("radius", radius_function_type(&radius)); // bp::def is a function for wrapping
Run Code Online (Sandbox Code Playgroud)
到目前为止我想到的是上面的typedef statemnt不是那种类型,我们大多数人都熟悉,
typedef complex_type simple_alias;
Run Code Online (Sandbox Code Playgroud)
相反,它是一种声明指向函数的指针的方法,该函数将int作为参数并返回double(与原型相同).所以现在我的问题是,如何使用函数的地址作为参数来调用指向函数的指针(没有解除引用)?这也与原型不符.有人请解释一下!
它不声明函数指针变量,而是调用函数指针typedef radius_function_type.radius_function_type(&radius)只是函数指针本身的(冗余)强制转换.(一元&操作者的地址也是多余的;对于一个功能,radius并且&radius是相同的东西.)
在较低的层次上,调用函数只是根据底层调用约定(通常在堆栈上)将参数放在某处,然后跳转到内存地址.因此,如果编译器知道函数指针类型(函数签名)和指针值本身,则可以仅使用指针调用函数.