C K& R 1.7电源功能

时间:2015-04-25 08:29:26

标签: c function undefined-reference

我用K& R本书教我的C,并被1.7示例中的 power function 弄糊涂了。

好吧,当我完全根据Code :: Block上的书中给出的示例编写代码并运行它时,发生了一个错误:未定义引用' power'。

代码如下:

#include <stdio.h>
#include <stdlib.h>

int power(int m, int n);
main ()
{
    int i;
    for (i = 0; i < 10; ++i)
        printf("%d %d %d\n", i, power(2, i), power(-3, i));
    return 0;
}

电源功能是库提供的预定义功能吗?因为上面的程序没有定义权力的身体部分

如果是这样,为什么我会遇到错误?我是否包含错误的库?

3 个答案:

答案 0 :(得分:2)

错误消息表明未定义函数power。我确信本书的某个地方有函数的定义,或者有一个练习要求你自己编写函数。

可以简单地写。例如,对于正n,函数可以看起来像

int power(int m, int n)
{
    int result = 1;

    for ( ; n; --n ) result *= m;

    return result;
}

你可以修改这个函数,使它接受负数n。:)

考虑到如果函数返回类型long long int

会更好

例如

long long int power(int m, unsigned int n)
{
    long long int result = 1;

    for ( ; n; --n ) result *= m;

    return result;
}

答案 1 :(得分:0)

标准C库中没有定义任何名为power()的内容。如果你想要一个power()函数,你必须在使用它之前编写自己的函数。

如果你想要一个库函数,它被称为pow(),在 math 库中定义。包含头文件math.h,无需转发定义原型。另外,请勿忘记使用-lm链接数学库。

答案 2 :(得分:0)

幂函数是图书馆提供的预定义函数吗?

答案:否。幂函数未预定义。

“因为上面的程序没有定义权力的主体部分”

我犯了同样的错误,没有检查下一页。看下一页,你会发现它的(幂函数)定义。

完整代码-

#include <stdio.h>

int power(int m, int n);
/* test power function */
int main(){
    
    int i;
    for(i = 0; i < 10; ++i)
        printf("%d %2d %3d", i, power(2,i), power(-3,i));
    return 0;
    }


int power(int base, int n)
{
    int i, p;
    p=1;

    for(i=1;i<=n;++i)
        p=p*base;

    return p;
}

关于错误:

就我而言,我在 geany 编辑器中尝试了与您完全相同的代码(除了这一行#include <stdlib.h>)并得到了-

gcc -Wall -o "pfunc" "pfunc.c" (in directory: /home/anz)
Compilation finished successfully.

如果我尝试使用 cc pfunc.c 从终端编译,我会收到错误(power undefined)

可能是编译器问题?无论如何,我想知道确切的原因。一旦我知道我会编辑。