在目标C ++中声明全局变量时出错?

| 每当将全局变量id theScene放在.mm文件中时,都会出现错误ѭ0。它适用于.m文件,但稍后需要box.d实现的.mm文件。另外,我认为真正的错误就在这里:
ld: duplicate symbol _theScene in /Users/sgupta100/Documents/TheifGame/build/TheifGame.build/Release-iphonesimulator/TheifGame.build/Objects-normal/i386/HelloWorldScene.o and /Users/sgupta100/Documents/TheifGame/build/TheifGame.build/Release-iphonesimulator/TheifGame.build/Objects-normal/i386/TheifGameAppDelegate.o
我不知道这到底意味着什么,所以有人可以解释吗?     
已邀请:
        这个变量是否在某个位置的标头中声明?如果是这样,声明是否使用
extern
关键字?如果不是,编译器将为每个编译单元(.m,.mm,.c,.cpp等)发出一个符号,该符号为标头的3%。 如果标题没有问题,则\“ HelloWorldScene \”和\“ TheifGameAppDelegate \”编译单元中的某些内容都会生成theScene符号。要么在变量中都定义了变量,要么其他名称(例如函数)恰好具有相同的名称。 在不发布您的代码或其他详细信息的情况下,我无法再告诉您有关此问题的信息。 更新:在多个文件中使用全局变量的正确方法是在标头中将变量声明为
extern
(在使用(Objective-)C ++进行编译时有条件地使用
extern \"C\"
,并且还需要从(Objective-)C访问该变量。只需在.m,.mm,.c或.cpp文件中一次定义一次,而不必使用“ 2”,也可以使用初始化程序,但所有需要访问该变量的文件都必须包含标头。     

要回复问题请先登录注册