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

C++ XCode:使用全局变量时出现重复符号错误,c++,xcode,duplicates,C++,Xcode,Duplicates,这是我的密码: A.h main.cpp #include "A.h" int main() { myFoo.bar = 2; return 0; } Xcode给了我一个错误(解释): 我想将foomyfoo保存在A.h文件中 那么为什么XCode会抛出这个错误,我该如何纠正它呢 您在标题中定义全局变量,它将打破 包含标头的每个TU都有自己的对象副本 您需要使用extern关键字: 在标头中将对象声明为extern 仅定义一个源文件 在要使用全局变量的任何位置包含标题 A.

这是我的密码:

A.h

main.cpp

#include "A.h"
int main()
{
    myFoo.bar = 2;
    return 0;
}
Xcode给了我一个错误(解释):

我想将
foomyfoo
保存在A.h文件中


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

您在标题中定义全局变量,它将打破
包含标头的每个TU都有自己的对象副本

您需要使用
extern
关键字:

  • 在标头中将对象声明为extern
  • 仅定义一个源文件
  • 在要使用全局变量的任何位置包含标题

  • A.h

    extern Foo myFoo;
    
    #include "A.h"
    
    Foo myFoo;
    
    main.cpp

    extern Foo myFoo;
    
    #include "A.h"
    
    Foo myFoo;
    
    XXXX.cpp

    #include "A.h"
    

    foomyfoo是定义,而不是声明。使用
    externfoo-myFoo用于声明,并将定义移动到单个实现文件中。

    确保将
    无公共块设置为无内置设置。

    对于下一个问题,请显示复制所需的所有代码。A.o.来自哪里?这是我们唯一的提示,你有第二个翻译单元,这在这里是至关重要的。