在 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
指令不是应该“智能地”包含文件吗?还有其他原因可能导致我收到此错误吗?我可以尝试其他解决方案吗?
感谢您的帮助:)
问题是您在多个翻译单元中包含相同的定义(
Block.o
和bits.o
)。要解决此问题,请声明函数 inline
或将定义移至(单个)源(非标头)文件。
这与
#include
与 #import
的问题正交。这就是在“相同”翻译单元中多次包含相同的代码。