extern "C"
除了指定标识符之外,还做些什么不应该被破坏?
C++ 功能在已声明为的函数中是否可用extern "C"
?
它只影响名称修改,以便其他应用程序可以清楚地看到外部可见性。
extern "C"
并不意味着编译为 C 代码。这仅意味着应该编译该函数,以便可以从 C 代码中调用它;实际影响的是实现相关的。在这样的函数中,你可以在 C++ 中做的任何事情都很好,包括抛出异常。
您不应该从它们中抛出异常,否则您可以extern "C"
使用尽可能多的 C++ 特性来实现函数体。
这很好:
MyObject myobj;
extern "C" {
int myfunc(char *c)
{ // c++ features used here
std::string s = myobj.method(....
}
}