为什么我会得到一个“a”;“重复符号”;iOS 7中的链接器错误?

为什么我会得到一个“a”;“重复符号”;iOS 7中的链接器错误?,ios,objective-c,c,Ios,Objective C,C,我知道复制符号链接器错误意味着什么,但在我的情况下,我不知道我是如何得到它的。我有以下文件,它定义了一些简单的全局变量 // defines.h #ifndef _DEFINES_H #define _DEFINES_H BOOL useTestCode = YES; #endif 然后我将其导入两个*.m文件,并使用全局变量 // someFile1.m #import "defines.h" - (void)foo { if (useTestCode) {

我知道复制符号链接器错误意味着什么,但在我的情况下,我不知道我是如何得到它的。我有以下文件,它定义了一些简单的全局变量

// defines.h

#ifndef _DEFINES_H
#define _DEFINES_H

BOOL useTestCode = YES;

#endif
然后我将其导入两个*.m文件,并使用全局变量

// someFile1.m
#import "defines.h"

- (void)foo
{
    if (useTestCode) {
        NSLog(@"Using test code");
    }
    else {
        NSLog(@"NOT Using test code");
    }
}

// someFile2.m
#import "defines.h"

- (void)foo
{
    if (useTestCode) {
        NSLog(@"Using test code");
    }
    else {
        NSLog(@"NOT Using test code");
    }
}
如果我注释掉其中一个文件中的#import“defines.h”语句,我不会得到重复的符号链接器错误,但当然相应的*.m文件将无法编译。为什么会出现重复符号链接器错误?如何在iOS 7中解决它

下面是链接器错误消息。这是上面简单代码的字面意思

重复符号\u在以下位置使用测试代码: /Users/cfout/Library/Developer/Xcode/DerivedData/dupsymb bnfownlxdoyqelbhxzpyaaitfshy/Build/Intermediates/dupsyme.Build/Debug iphonesimulator/dupsym.Build/Objects normal/x86_64/DSsomeFile2.o /Users/cfout/Library/Developer/Xcode/DerivedData/dupsymb bnfownlxdoyqelbhxzpyaaitfshy/Build/Intermediates/dupsyme.Build/Debug iphonesimulator/dupsym.Build/Objects normal/x86_64/DSsomeFile1.o ld:架构x86_64的1个重复符号
叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)

在您的头中

BOOL useTestCode = YES;
它被复制到包含它的每个.m文件中,因此您有多个
useTestCode
符号

您需要更改标题以包含

extern BOOL useTestCode;
并在one.m文件中定义变量

BOOL useTestCode = YES;

在你的标题中,你有

BOOL useTestCode = YES;
它被复制到包含它的每个.m文件中,因此您有多个
useTestCode
符号

您需要更改标题以包含

extern BOOL useTestCode;
并在one.m文件中定义变量

BOOL useTestCode = YES;

在你的标题中,你有

BOOL useTestCode = YES;
它被复制到包含它的每个.m文件中,因此您有多个
useTestCode
符号

您需要更改标题以包含

extern BOOL useTestCode;
并在one.m文件中定义变量

BOOL useTestCode = YES;

在你的标题中,你有

BOOL useTestCode = YES;
它被复制到包含它的每个.m文件中,因此您有多个
useTestCode
符号

您需要更改标题以包含

extern BOOL useTestCode;
并在one.m文件中定义变量

BOOL useTestCode = YES;

虽然布莱恩C的答案是一个解决方案,它给了我一个线索,但我更喜欢这个

// defines.h

#ifndef _DEFINES_H
#define _DEFINES_H

static BOOL useTestCode = YES;

#endif

虽然布莱恩C的答案是一个解决方案,它给了我一个线索,但我更喜欢这个

// defines.h

#ifndef _DEFINES_H
#define _DEFINES_H

static BOOL useTestCode = YES;

#endif

虽然布莱恩C的答案是一个解决方案,它给了我一个线索,但我更喜欢这个

// defines.h

#ifndef _DEFINES_H
#define _DEFINES_H

static BOOL useTestCode = YES;

#endif

虽然布莱恩C的答案是一个解决方案,它给了我一个线索,但我更喜欢这个

// defines.h

#ifndef _DEFINES_H
#define _DEFINES_H

static BOOL useTestCode = YES;

#endif

链接错误消息是什么?将信息复制到您的问题中。特别是,什么是重复符号。此外,如果“defines.h”足够小,请在问题中包含它。您应该显示完整的错误日志。我认为xcode将显示重复的符号链接错误消息是什么?将信息复制到您的问题中。特别是,什么是重复符号。此外,如果“defines.h”足够小,请在问题中包含它。您应该显示完整的错误日志。我认为xcode将显示重复的符号链接错误消息是什么?将信息复制到您的问题中。特别是,什么是重复符号。此外,如果“defines.h”足够小,请在问题中包含它。您应该显示完整的错误日志。我认为xcode将显示重复的符号链接错误消息是什么?将信息复制到您的问题中。特别是,什么是重复符号。此外,如果“defines.h”足够小,请在问题中包含它。您应该显示完整的错误日志。我认为xcode将显示重复的符号