2016-03-01 45 views
-1

爲什麼它顯示錯誤像ld返回1退出狀態和未定義的引用'powr(int,int)'爲什麼它顯示錯誤像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; 
     } 
    } 
} 
+0

的可能的複製[C - 未定義參照SQRT(或其他數學函數)](http://stackoverflow.com/questions/5248919/c-undefined-reference-to-sqrt - 或者其他數學函數) –

+3

C中沒有標準函數'powr(int,int)'你是否指'math.h'中的'pow(double,double)'? – Bathsheba

+0

你放了一個'powr'函數的原型,但是你沒有提到它在問題中的定義。沒有看到定義什麼都不能說。 – haccks

回答

2

我想你想使用pow函數,它返回兩個數字的冪。因爲powmath.h。所以,包括它:

#include <math.h> 

雖然編譯它,鏈接math.h

gcc program.c -lm 

-lm是其鏈接到math.h庫。

另見:C - undefined reference to sqrt (or other mathematical functions)

+0

我認爲他想寫一個冪函數而不是使用現有函數。 – haccks

+0

@haccks,恩,你確定嗎?我不這麼認爲。我會嘗試製作一個,然後發佈。給我一些時間。 –

相關問題