转自:(65条消息) error: template with C linkage_jiong_1988的专栏-CSDN博客
当编译C/C++混用的项目时,可能会遇到这个问题。
1.某个头文件中extern “C”的使用存在问题,如果包含这个有问题的头文件之后,又包含<map>,<vector>等就会出现这个问题。
1). 需要检查extern "C"后面为一个函数
extern "C" int get_value(void);
2). extern "C" { }的定义是否完整。
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
2. 不要在extern "C"的中引用C++ STL库的头文件,如<map>, <vector>等具有template的头文件。标准库文件,尽量不要放到extern "C" 中
extern "language_name" declaration ;
extern "language_name" { declaration ; declaration ; ... }
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
}
本文详细阐述了在编译C/C++混合项目时,如何正确处理externC的使用,避免因模板库错误导致的问题,以及关于externC内不同链接方式的示例。

1435

被折叠的 条评论
为什么被折叠?



