声明为"外部"C""的功能的限制?C++功能仍然可用?

Limitations to functions declared as `extern "C"`? C++ features still usable?

本文关键字:功能 C++ 外部 声明      更新时间:2023-10-16

除了指定标识符之外,extern "C"是否做了更多的事情?

c++特性在被声明为extern "C"的函数中可用吗?

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

extern "C" not表示编译为C代码。这意味着只有函数应该被编译,以便可以从C代码调用它;实际影响的是与实现相关的。在c++中可以做的任何事情在这样的函数中都可以,包括抛出异常。

你不应该抛出异常,否则你可以实现一个extern "C"函数体与尽可能多的c++特性,你喜欢。

这很好:

MyObject myobj;
extern "C" { 
    int myfunc(char *c) 
    {    // c++ features used here
        std::string s = myobj.method(....
    }
}