/*
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(); */