我正在尝试使用带有Mingw的CodeBlocks构建一个c ++程序我从STL库文件中收到错误,例如stl_uninitalized.h和vector.cc
|=== Build: all in MinervaSegs (compiler: GNU GCC Compiler) ===| C:\PROGRA~2\CODEBL~1\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl_uninitialized.h|63|error: template with C linkage
答案 0 :(得分:8)
您可能正在使用范围extern "C"
表示法并在该范围内包含C ++代码。例如:
#ifdef __cplusplus
extern "C" {
#endif
#include <vector> // could generate this error
template <typename T> // would also generate this error
struct MyExample
{
T data;
};
#ifdef __cplusplus
} // end extern "C"
#endif
您通常应该完全避免extern "C"
区域内的包含,因为这可能导致多个声明,否则它们将是相同的符号。
当与不能使C ++识别的C代码互通时,有一些特殊的例外情况 - 但在那里需要注意。