非常奇怪,我有一个包含许多const和变量的.h
文件。
我有两个使用他的课程,因此导入他:
classA
和classB
:( #import "configurations.h"
)
现在我添加的另一个新类C
进来了,当我尝试对他做同样的事情时,导入配置文件 - 我收到mach-o-linker
错误。
检查一下:即使新类C
为空(!),我也无法添加该配置文件并获得相同的错误。我也尝试过新课程,也是如此。
我只能将它添加到A B,现在不再导入了!
修改
好的,我现在明白了,首先它不会发生在A类和B类中,因为:A.m
和B.mm
因此我可以用.h文件导入它们。
问题可能是因为我不会在.h文件中使用extern
和我的consts?
(我试过extern但仍然有错误),我从.h创建了2个consts副本:
我如何在.h文件中定义它们?就像那样:
const int wordSize=8;
const int numOfWords=8;
我在这里失踪了吗?
(还有一些其他D类,如果有问题则导入A B C)
答案 0 :(得分:0)
.h文件用于声明
.m文件用于定义
这意味着没有“=”符号.h,没有方法实现。如果你有常数:
configurations.h
extern const int wordSize;
extern NSString * const someStringConst;
configurations.m
const int wordSize = 8;
NSString * const someStringConst = @"someStringConst";
如果你导入你的 configurations.h
const int wordSize = 8;
从多个文件中,编译器为每个导入配置的文件生成_wordSize符号
链接器肯定无法解析这些重复的符号 - 因此最好的方法是使用extern
声明来删除.h文件中的定义,如上所示。