5

extern "C"除了指定标识符之外,还做些什么不应该被破坏?

C++ 功能在已声明为的函数中是否可用extern "C"

4

3 回答 3

2

它只影响名称修改,以便其他应用程序可以清楚地看到外部可见性。

于 2013-03-17T10:36:07.423 回答
1

extern "C"并不意味着编译为 C 代码。这意味着应该编译该函数,以便可以从 C 代码中调用它;实际影响的是实现相关的。在这样的函数中,你可以在 C++ 中做的任何事情都很好,包括抛出异常。

于 2013-03-17T16:04:16.957 回答
0

您不应该从它们中抛出异常,否则您可以extern "C"使用尽可能多的 C++ 特性来实现函数体。

这很好:

MyObject myobj;
extern "C" { 
    int myfunc(char *c) 
    {    // c++ features used here
        std::string s = myobj.method(....
    }
}
于 2013-03-17T14:46:59.253 回答