extern "C"
除了指定标识符不应该被破坏之外还会做更多的事情吗?
C ++功能是否已在声明为extern "C"
的函数中可用?
答案 0 :(得分:2)
它只影响名称修改,以便外部可见性对其他应用程序清晰。
答案 1 :(得分:1)
extern "C"
不意味着编译为C代码。这意味着仅该函数应该被编译,以便可以从C代码中调用它;实际影响的是依赖于实现的。你可以在C ++中做的任何事情都可以在这样的函数中完成,包括抛出异常。
答案 2 :(得分:0)
您不应该从它们中抛出异常,否则您可以使用尽可能多的C ++功能实现extern "C"
函数的主体。
这很好:
MyObject myobj;
extern "C" {
int myfunc(char *c)
{ // c++ features used here
std::string s = myobj.method(....
}
}