这是我的代码:
啊
class Foo
{
public:
int bar;
};
Foo myFoo;
主文件
#include "A.h"
int main()
{
myFoo.bar = 2;
return 0;
}
Xcode 给了我错误(释义):
duplicate symbol _myFoo in main.o & A.o
我想保留Foo myFoo在 Ah 文件中。
那么为什么 XCode 会抛出这个错误,我该如何纠正呢?
这是我的代码:
啊
class Foo
{
public:
int bar;
};
Foo myFoo;
主文件
#include "A.h"
int main()
{
myFoo.bar = 2;
return 0;
}
Xcode 给了我错误(释义):
duplicate symbol _myFoo in main.o & A.o
我想保留Foo myFoo在 Ah 文件中。
那么为什么 XCode 会抛出这个错误,我该如何纠正呢?
您在 header 中定义全局变量,它违反了一个定义规则。
包含标头的每个 TU 都将拥有自己的对象副本。
您需要使用extern关键字:
啊
extern Foo myFoo;
主文件
#include "A.h"
Foo myFoo;
XXXX.cpp
#include "A.h"
Foo myFoo;是定义,而不是声明。用于extern Foo myFoo;声明并将定义移动到单个实现文件中。
确保您No Common Blocks在构建设置中设置为否。