/*
C++Primer这本书上书上是说C++接收C的函数指针时,必须用typedef定义一个和传入的C的函数同类型的一个函数类型别名,用这个类型的指针作为函数形参,
编译器才知道传入的是一个C函数,如果不用typedef直接写成函数指针的形式则会编译不过,但是我刚刚试了一下是可以用的!!应该是现代编译器做了混合链接的优化处理。
下面是演示代码:
extern"C" typedef void (CFUNC)(int a, int b);
typedef int CPPFUNC(int a, int b);
extern"C" void CFunction(int a, int b)
{
printf("[a:%d],[b:%d]",a,b);
}
int CPPFunction(int a, int b)
{
printf("[a:%d],[b:%d]", a, b);
return a + b;
}
void GetCFunctionPointer(CFUNC*p)
{
p(111, 222);
}
void GetCPPFunctioPointer(CPPFUNC * p)
{
p(666, 777);
}
void Call()
{
GetCFunctionPointer(CFunction);
}
void CallCppFunc()
{
GetCPPFunctioPointer(CPPFunction);
}
Call();
CallCppFunc();
*/