1

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

MAIN -> VM -> BACKEND

主要包括 vm,其中包括后端。

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

vm.cpp我在,main.cppmoc_vm.cpp(我使用 Qt)中得到了多个定义。

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

有任何想法吗?

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

4

3 回答 3

0

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

于 2013-08-11T20:58:45.483 回答
0

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

你应该是安全的。

于 2013-08-11T20:52:20.497 回答
0

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

于 2013-08-11T20:52:21.897 回答