为什么我会得到clang:错误:链接器命令失败,退出代码为1?

Hen*_*rik 16 c

我是一个新手,正在使用Xcode慢慢地通过K&R.在功能部分,我输入了功率函数示例的代码,如下所示.

#include <stdio.h>

int 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;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时出现以下错误:

架构x86_64的未定义符号:"_ power",引用自:main.o中的_main ld:未找到架构x86_64 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)

我已经阅读了很多关于这个问题的答案,但是看不出它如何适用于我这种小程序的情况.
将不胜感激任何帮助.

Pun*_*ara 7

为什么会出现clang:错误:链接器命令失败,退出代码为1?

您刚刚声明了该函数。代码中没有任何定义。在链接过程中,编译器(此处为clang)无法将power函数链接到其定义,因此链接器在这种情况下会引发错误。如果您定义

int power(int x, int y)  
         { 
               \*do calculation*/
         }
Run Code Online (Sandbox Code Playgroud)

然后链接器可以将您的power函数声明链接到其定义,您不会收到任何错误。

对于整数,我为您提供了功能。

#include <stdio.h>
int 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;
}
Run Code Online (Sandbox Code Playgroud)

用编译 gcc file.c

希望您理解该功能。祝好运 :-)