在我正在使用的项目中,我发现了一个复杂的宏,它正在创建一个指向共享库中加载的函数的指针映射。要将它用于另一个应该加载的库,我必须检查它...并发现它包含的行不应该像我所知的那样工作。把它归结为简单的代码,我扔掉了所有的语法糖并做了这样的例子:
#include <iostream>
using namespace std;
void func(int i, float f)
{
cout << "Parameter is " << i << " and " << f << endl;
}
typedef void (*FunctionFunc)(int i, float f);
int _tmain(int argc, _TCHAR* argv[])
{
FunctionFunc p = &func;
(p)(5,4.3f);
return 0;
}
函数调用不应该看起来像(* p)(5,4.3f) - 根据自K&amp; R以来的书籍?编译器是VS2010,上面的代码既可以使用星号,也可以不使用。
答案 0 :(得分:1)
不,取消引用是没有必要的。函数指针可以像函数一样调用。即使p(5, 4.3f)
也是可以接受的。