<分区>
在我正在使用的项目中,我发现了一个复杂的宏,它正在创建指向从共享库加载的函数的指针映射。要将它用于另一个应该以相同方式加载的库,我必须检查它......并发现它包含据我所知不应该工作的行。为了把它归结为简单的代码,我扔掉了所有的语法糖,做了这样的例子:
#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&R 之后的书吗?编译器是 VS2010,上面的代码在带星号和不带星号的情况下都有效。