包含文件会导致全局变量的多个定义错误

时间:2013-08-11 20:49:50

标签: c++ include global-variables multiple-definition-error

我得到了一个时髦的多重定义错误。包含结构如下:

MAIN -> VM -> BACKEND

Main包括vm,其中包括后端。

我在后端有三个全局char *指针,而且我得到了多个定义错误的成员。

我在vm.cppmain.cppmoc_vm.cpp中获得了多个定义(我使用Qt)。

我尝试在其他来源中将指针声明为外部指针,但它没有帮助。所有预处理器防护装置都已到位,我不知道为什么我会收到错误,因为它们显然只在一个地方定义......

有什么想法吗?

编辑:这很奇怪,我可以将BACKEND包含在MAIN中并且没有问题,只有当链是MAIN> VM> BACKEND时我才会收到错误。

3 个答案:

答案 0 :(得分:0)

在头文件中将它们定义为外部。 在单个cpp文件中定义它们(而不是外部)。

你应该安全。

答案 1 :(得分:0)

使用extern char *name;,然后在一个.cpp文件中使用char *name = "Something";

答案 2 :(得分:0)

通过将指针更改为静态来解决,因此它们不会外部链接。无论如何,它们不会被任何其他来源访问。所以这毕竟是一个联系问题......