Tho*_*day 103
语言允许:
extern "C" {
#include "foo.h"
}
Run Code Online (Sandbox Code Playgroud)
如果foo.h包含需要C++链接的东西怎么办?
void f_plain(const char *);
extern "C++" void f_fancy(const std::string &);
Run Code Online (Sandbox Code Playgroud)
这就是你如何保持链接器的快乐.
Jam*_*ran 32
没有真正的理由可以使用extern "C++".它只是明确了隐式默认的链接.如果你有一个类,其中一些成员有外部"C"链接,你可能希望明确说明其他成员是extern"C++".
请注意,C++标准在语法上定义extern "anystring".它只给正规的含义extern "C"和extern "C++".编译器供应商可以自由定义extern "Pascal",甚至extern "COM+"可以自己定义.
jef*_*ffm 19
我不确定你为什么需要这样做,但是根据Sun的这篇文章,你可以在extern"C"块中使用extern"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
}
Run Code Online (Sandbox Code Playgroud)