0

很奇怪,我有一个.h包含许多 const 和 variables 的文件。

我有两个使用他的课程,因此导入他:

classA, 和classB : ( #import "configurations.h")

现在我添加了另一个新类C,进来了,当我尝试对他做同样的事情时,导入配置文件 - 我得到一个mach-o-linker错误。

检查一下:即使新类C是空的(!),我也无法添加该配置文件并得到相同的错误。我也尝试过新课程,也是一样。我只能将它添加到 AB 中,现在,不再导入!

编辑

好的,我现在明白了,首先它不会发生在 A 类和 B 类中,因为:A.m因此B.mm我可以使用该 .h 文件导入它们。

问题可能是因为我没有extern在 .h 文件中使用我的常量?(我已经尝试过 extern 并且仍然出现错误),我以某种方式从 .h 创建了 2 个 const 副本:我如何在 .h 文件中定义它们?就像这样:

const int wordSize=8;
const int numOfWords=8;

为什么我在这里失踪?

(还有其他一些 D 类,如果有问题,可以导入 ABC)

4

1 回答 1

0

.h 文件用于声明
.m 文件用于定义
这意味着 .h 中没有“=”符号,没有方法实现。如果你有常数:

配置.h

extern const int wordSize;
extern NSString * const someStringConst;

配置.m

const int wordSize = 8;
NSString * const someStringConst = @"someStringConst";

如果您导入您的configurations.h

const int wordSize = 8;

从多个文件中,编译器为导入配置的每个文件生成 _wordSize 符号。h
链接器肯定无法解析这些重复的符号 - 所以最好的方法是使用extern上面显示的声明来删除 .h 文件中的定义。

于 2013-09-25T13:13:56.107 回答