在这个article中,关键字extern后面可以跟"C“或"C++”。为什么要使用'extern“C++‘?它实用吗?
发布于 2009-03-04 15:02:46
该语言允许:
extern "C" {
#include "foo.h"
}
如果foo.h包含需要C++链接的内容怎么办?
void f_plain(const char *);
extern "C++" void f_fancy(const std::string &);
这就是你保持链接器快乐的方法。
发布于 2009-03-04 15:10:43
没有使用extern "C++"
的真正理由。它只是显式的链接,即隐式缺省。如果您有一个类,其中一些成员具有外部"C“链接,您可能希望显式声明其他成员是外部"C++”。
请注意,C++标准在语法上定义了extern "anystring"
。它只给extern "C"
和extern "C++"
以形式上的含义。编译器供应商可以根据自己的喜好自由定义extern "Pascal"
,甚至extern "COM+"
。
发布于 2009-03-04 15:20:47
我不知道为什么需要这样做,但根据来自Sun的this文章,您可以在外部"C“块中使用外部" C++”来指定一组具有本机C++链接的"C“函数中的某些函数。
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
}
https://stackoverflow.com/questions/610934
复制相似问题