我正在将一些可怕的旧版C++代码从gcc 3.x移植到4.x
头文件中有一个看起来像这样的构造:
extern class ErrorLog
{
. . .
} error_log, debug_log;
在3.x下,它可以编译并正常工作,但是在4.x下,我会收到很多形式的错误
undefined reference to `error_log'
undefined reference to `ErrorLog::log(ErrorLog::LogAttr const&, char const*, ...)'
最佳答案
我认为这与我不久前提交给GCC的bug report有关。问题是,这是否定义了class ErrorLog
类型?我建议您将定义和声明分开,如下所示:
class ErrorLog{...};
extern ErrorLog error_log, debug_log;
大概
class ErrorLog
也定义在其他地方-理想情况下,您应该更改它,使其仅定义一次。关于c++ - extern类:从gcc 3.x移植到4.x时 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5188075/