全局变量多重声明

Sin*_*ico 1 c++ boost

我在类的头文件中包含一个带有全局增强信号的 .h 文件,该类的头文件又包含在主函数的文件中。链接器说信号被多次声明。信号声明包含在典型的 C/C++ 头文件的#ifndef,#define#endif块中(用于避免多重声明)。我正在使用带有 gcc 的 Eclipse。

#ifndef SIG_HEADER
#define SIG_HEADER
#include <boost/signal.hpp>

boost::signal0 <void> signal1;

#endif
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

cha*_*ite 5

您收到的是链接器错误,而不是编译器错误。因此,预处理器指令在这里无济于事。

您需要做的是在源文件(相对于头文件)中定义变量,并extern在头文件中使用声明。