为啥它显示像 ld 返回 1 退出状态和未定义的引用 `powr(int, int)' 之类的错误
Posted
技术标签:
【中文标题】为啥它显示像 ld 返回 1 退出状态和未定义的引用 `powr(int, int)\' 之类的错误【英文标题】:why is it showing errors like ld returned 1 exit status and undefined reference to `powr(int, int)'为什么它显示像 ld 返回 1 退出状态和未定义的引用 `powr(int, int)' 之类的错误 【发布时间】:2016-03-01 09:18:27 【问题描述】:为什么会显示类似 ld 返回 1 退出状态和未定义引用 `powr(int, int)' 之类的错误
#include<stdio.h>
int powr (int m , int n );
int main ()
int i,m,n;
printf("print the base\n");
scanf("%d",&m);
printf("print the expoenent\n");
scanf("%d",&n);
int p ;
if (n == 1 )
return m;
else
p = powr(m,n/2);
if (n%2 ==0 )
return p*p ;
else
return p*p*m;
【问题讨论】:
C - undefined reference to sqrt (or other mathematical functions)的可能重复 C 中没有标准函数powr(int, int)
。你的意思是pow(double, double)
来自math.h
吗?
您放置了powr
函数的原型,但您在问题中没有提到它的定义。没有看到定义就不能说什么。
【参考方案1】:
我认为您想使用返回两个数字的幂的pow
函数。
因为pow
在math.h
中。所以包括它:
#include <math.h>
在编译时,链接math.h
:
gcc program.c -lm
-lm
将其链接到 math.h
库。
另见:C - undefined reference to sqrt (or other mathematical functions)
【讨论】:
我想他想写一个幂函数而不是使用现有的。 @hacks,嗯,你确定吗?我不这么认为。我会尝试制作一个,并发布它。给我一些时间。以上是关于为啥它显示像 ld 返回 1 退出状态和未定义的引用 `powr(int, int)' 之类的错误的主要内容,如果未能解决你的问题,请参考以下文章
C ++错误:对“”的未定义引用,并且ld返回了1个退出状态[重复]