声明为`extern" C"`的函数的局限性? C ++功能仍然可用?

时间:2013-03-17 10:34:41

标签: c++ c language-features extern

extern "C"除了指定标识符不应该被破坏之外还会做更多的事情吗?

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

3 个答案:

答案 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(....
    }
}