首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么要使用'extern“C++‘?

为什么要使用'extern“C++‘?
EN

Stack Overflow用户
提问于 2009-03-04 14:59:39
回答 9查看 35.1K关注 0票数 77

在这个article中,关键字extern后面可以跟"C“或"C++”。为什么要使用'extern“C++‘?它实用吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-03-04 15:02:46

该语言允许:

代码语言:javascript
复制
extern "C" {
  #include "foo.h"
}

如果foo.h包含需要C++链接的内容怎么办?

代码语言:javascript
复制
    void f_plain(const char *);
    extern "C++" void f_fancy(const std::string &);

这就是你保持链接器快乐的方法。

票数 115
EN

Stack Overflow用户

发布于 2009-03-04 15:10:43

没有使用extern "C++"的真正理由。它只是显式的链接,即隐式缺省。如果您有一个类,其中一些成员具有外部"C“链接,您可能希望显式声明其他成员是外部"C++”。

请注意,C++标准在语法上定义了extern "anystring"。它只给extern "C"extern "C++"以形式上的含义。编译器供应商可以根据自己的喜好自由定义extern "Pascal",甚至extern "COM+"

票数 33
EN

Stack Overflow用户

发布于 2009-03-04 15:20:47

我不知道为什么需要这样做,但根据来自Sun的this文章,您可以在外部"C“块中使用外部" C++”来指定一组具有本机C++链接的"C“函数中的某些函数。

代码语言:javascript
复制
extern "C" {
    void f();             // C linkage
    extern "C++" {
        void g();         // C++ linkage
        extern "C" void h(); // C linkage
        void g2();        // C++ linkage
    }
    extern "C++" void k();// C++ linkage
    void m();             // C linkage
}
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/610934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档