在Xcode中处理大型项目时,我似乎只是遇到了一个错误。这次,GCC抱怨结构打印功能的重复定义 - 实际定义(在不同的文件中),以及使用它(在驱动程序中)的定义。
我得到的具体错误是:
ld: duplicate symbol _fprintConfiguration in
/.../bits.build/Objects-normal/x86_64/Block.o and
/.../bits.build/Objects-normal/x86_64/bits.o
其中Block.o包含定义,bits.o包含驱动程序。
我已经对此进行了一些研究,但似乎每个问题都存在于人们实际使用#include
两次定义它,但在我的所有文件中我只使用#import
。是不是#import
指令应该'智能'包含文件?有没有其他原因我可能会收到此错误?我可以尝试其他任何解决方案吗?
感谢您的帮助:)
答案 0 :(得分:3)
问题是您在多个翻译单元(Block.o
和bits.o
)中包含相同的定义。要解决此问题,请声明函数inline
或将定义移动到(单个)源(非标头)文件。
这与#include
与#import
的问题正交。这是在相同的翻译单元中多次包含相同的代码。