gpt4 book ai didi

c++ - XCode:使用全局变量时出现重复符号错误

转载 作者:太空狗 更新时间:2023-10-29 23:46:01 25 4
gpt4 key购买 nike

这是我的代码:

啊啊

class Foo
{
public:
int bar;
};

Foo myFoo;

主要.cpp

#include "A.h"
int main()
{
myFoo.bar = 2;
return 0;
}

Xcode 给我错误(释义):

duplicate symbol _myFoo in main.o & A.o

我想将 Foo myFoo 保留在 A.h 文件中。

那么为什么 XCode 会抛出这个错误,我该如何纠正它?

最佳答案

您在 header 中定义了全局变量,它打破了 one definition rule .
您包含标题的每个 TU 都将拥有自己的对象拷贝。

你需要使用extern关键字:

  1. 在 header 中将对象声明为 extern。
  2. 定义一个且唯一的源文件。
  3. 在要使用全局变量的任何地方包含标题

啊啊

extern Foo myFoo;

main.cpp

#include "A.h"

Foo myFoo;

XXXX.cpp

#include "A.h"

关于c++ - XCode:使用全局变量时出现重复符号错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14402320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com