我有一个带有单个 C 样式函数的 .h 文件:
void myFunc(NSArray *array) {
...
}
我希望这个功能在每个文件中都可用,所以我#import "Functions.h"
进入了我的 App-Prefix.pch 文件。
但是,这给了我一个编译错误ld: 38 duplicate symbols for architecture i386
。这样做的正确方法是什么?
我有一个带有单个 C 样式函数的 .h 文件:
void myFunc(NSArray *array) {
...
}
我希望这个功能在每个文件中都可用,所以我#import "Functions.h"
进入了我的 App-Prefix.pch 文件。
但是,这给了我一个编译错误ld: 38 duplicate symbols for architecture i386
。这样做的正确方法是什么?
你不应该在头文件中实现实际的 C 函数体,就像你不应该在头文件中实现 Objective-C 方法一样。
我的函数
void myFunc(NSArray *array);
我的函数
void myFunc(NSArray *array) {
...
}
显然,您还应该#ifndef
在标题顶部添加 a ,如果您决定不使用任何 Objective-C in myfunc.m
,您也可以将其重命名为myfunc.c
.
更新:
原因是头文件是从程序的多个入口点(多个文件)中收集的。然后你的编译器有点头晕,开始想知道你真正想要调用什么函数体(因为有多个)。一个更明显的例子是在一个 C 文件中两次声明相同的函数名。最后,您应该使用头文件来“描述”您的函数(添加文档和所有内容),然后使用您的主文件(.m)或 C 文件(.c)来指示编译器在调用该函数时要做什么.