我正在将一些可怕的旧版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/

10-10 10:08