我用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;
}
电源功能是库提供的预定义功能吗?因为上面的程序没有定义权力的身体部分
如果是这样,为什么我会遇到错误?我是否包含错误的库?
答案 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)
可能是编译器问题?无论如何,我想知道确切的原因。一旦我知道我会编辑。