我正在尝试使用 CodeBlocks 和 Mingw 构建一个 C++ 程序,我收到来自 STL 库文件(例如 STL_uninitalized.h 和 vector.cc)的错误
|=== 构建:全部在 MinervaSegs 中(编译器:GNU GCC 编译器)===| C:\PROGRA~2\CODEBL~1\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\STL_uninitialized.h|63|error: 带有 C 链接的模板
您可能正在使用范围 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 代码交互时,有一些特定的异常(exception)情况 - 但买者自负。