我是一个新手,正在使用Xcode慢慢地通过K&R.在功能部分,我输入了功率函数示例的代码,如下所示.
#includeint power(int m, int n); int main() { int i; for (i=0; 1<10; ++i) printf("%d %d %d\n", i, power(2,i), power(-3,i)); return 0; }
当我尝试运行它时出现以下错误:
架构x86_64的未定义符号:"_ power",引用自:main.o中的_main ld:未找到架构x86_64 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我已经阅读了很多关于这个问题的答案,但是看不出它如何适用于我这种小程序的情况.
将不胜感激任何帮助.
为什么会出现clang:错误:链接器命令失败,退出代码为1?
您刚刚声明了该函数。代码中没有任何定义。在链接过程中,编译器(此处为clang)无法将power
函数链接到其定义,因此链接器在这种情况下会引发错误。如果您定义
int power(int x, int y) { \*do calculation*/ }
然后链接器可以将您的power
函数声明链接到其定义,您不会收到任何错误。
对于整数,我为您提供了功能。
#includeint power(int base, int exp); int main() { int i; for (i=0; i<10; ++i) printf("%d %d %d\n", i, power(2,i), power(-3,i)); return 0; } int power(int base, int exp) { int result = 1; while (exp) { if (exp & 1) result *= base; exp >>= 1; base *= base; } return result; }
用编译 gcc file.c
希望您理解该功能。祝好运 :-)