Objective-C中C函数的重复符号错误

dav*_*Mac 9 c xcode objective-c linker-errors

首先,我在编程中只使用了Objective-c方法.我决定做几个快速的数学计算作为c函数,然后最终需要它们用于多个类.所以我把c函数放在一个单独的.h文件中.这工作正常,直到我尝试将.h文件导入多个类.然后我收到这个错误:

重复符号*_myFunction*blah blah blah链接器命令失败,退出代码为1(使用-v查看调用)

如何在没有此链接错误的情况下在多个类中使用ac函数.我试过在我需要的类中定义函数,但似乎即使它们是不同的类,如果函数名相同,我也会得到这个错误.我在这里可能很疯狂,但有些帮助理解会很棒.

das*_*ght 15

您应该将声明放在.h文件中,将它们设置为extern,并将定义移动到.c或.m文件中.

由此

myfunctions.h

int max(int a, int b) {
    return a>b ? a : b;
}
Run Code Online (Sandbox Code Playgroud)

转到此:

myfunctions.h

extern int max(int a, int b); // declaration
Run Code Online (Sandbox Code Playgroud)

myfunctions.c

int max(int a, int b) {
    return a>b ? a : b;
}
Run Code Online (Sandbox Code Playgroud)