iOS_小问题积累(duplicate symbo)

今天练习的时候,又遇到一些小错误,又是一下子没找到问题,但是其实是很简单的问题。写了段代码,在链接是报了一个错误:

uplicate symbol _ToolbarMode in:

    /Users/helpdesk/Library/Developer/Xcode/DerivedData/xxx-bxeqhqjuvphnuabolgwbzzprutpi/Build/Intermediates/xxx.build/Debug-iphonesimulator/xxx.build/Objects-normal/x86_64/file1.o

    /Users/helpdesk/Library/Developer/Xcode/DerivedData/xxx-bxeqhqjuvphnuabolgwbzzprutpi/Build/Intermediates/xxx.build/Debug-iphonesimulator/xxx.build/Objects-normal/x86_64/file2.o

ld: 1 duplicate symbol for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)


应该是在两个源文件中定义了相同名字的全局变量导致的,但是我反复检查了我的代码,没有相同的全局变量一样啊。又是那种有经验的人士可以一下子看出来的问题,新手需要反复检查。我觉得犯错误不可怕吧,实际操作了有错误是难免的,在平时遇到了,反而更好,有大把时间去查找原因,而且是自己亲身体验过的问题,印象也是特别深刻的。

经过仔细查找,还是找到了原因,细节的小问题。在这两个源文件里都包含了一个头文件,比如 test.h的头文件,里面想定义一个美剧类型供这两个文件使用,第一次的写法是这样的:

NS_ENUM(NSInteger, ToolbarMode)

{

    TOOLBAR_OPERATORS,

    TOOLBAR_MODES,

    TOOLBAR_USER_CODE

};

貌似没什么问题啊,而且两个源文件里能正常使用和编译过啊,但仔细已看就有问题了。这样是相当于定义了一个ToolbarMode的变量,并不是一个类型啊,所以当有两个源文件包含了这个头文件以后,相当于在这两个源文件里定义了相同名字的全局变量,导致了编译时出现的问题。实际上我是要定义的是一个类型,少了一个typedef,所以修改成这样就以了:

typedef NS_ENUM(NSInteger, ToolbarMode)

{

    TOOLBAR_OPERATORS,

    TOOLBAR_MODES,

    TOOLBAR_USER_CODE

};

吃一堑,长一智,以前貌似没遇到过相似问题,这次遇到了,也花了些时间查找,我觉得遇到问题,解决问题,还是蛮开心的额,或许在别人看来不是一个问题吧。哈哈。。。记录一下,每天进步一点点啊。。。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值