为啥它显示像 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 函数。

因为powmath.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)' 之类的错误的主要内容,如果未能解决你的问题,请参考以下文章

多重定义collect2:错误:ld在C中返回1退出状态

C ++错误:对“”的未定义引用,并且ld返回了1个退出状态[重复]

C++ 错误:对“<func name>”的未定义引用和 ld 返回 1 个退出状态 [重复]

ld 返回的退出状态 1 是啥?

C++ ld 返回 1 个退出状态

collect2:错误:ld 返回 1 退出状态,gcc