Extern "C" 函数内部使用 C++ 类

Har*_*rry 4 c c++ extern linkage

这样做合法吗?我想导出一个 C 函数,但在内部该函数将使用一个 C++ 类。

extern "C" BOOL /*BOOL==int*/ Func()
{
   return someclass::getinstance()->Func(); // this is just bool tho
}
Run Code Online (Sandbox Code Playgroud)

Ama*_*9MF 5

这是完全合法的。extern "C" 的目的是防止 Func() 对其名称进行修改(用类型信息修饰),以便 C 模块可以使用其纯名称链接到它。C++ 修改名称,以便可以解析名称相同但参数列表不同的函数(函数重载)。