In project I'm working with I had found a complex macro that was creating an map of pointers to functions loaded from shared library. To use it for another library which should be loaded same way I had to inspect that.. and found that it contains line that shouldn't be working as far as I know. To boil down it to simple code, I threw away all syntax sugar and made such example:
#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;
}
Shouldn't the function call look like (*p)(5,4.3f) - according to books since K&R's? Compiler is VS2010 and code above works both with asterisk and without.