2015-02-06 143 views
-1

我不斷收到警告,說我的函數有一個未定義的引用,並且對我沒有多大意義或者如何解決它。下面是錯誤警告:未定義的函數參考

log_2.c:在函數 '主':log_2.c:29:警告:隱 聲明的功能 'logbase2' /tmp/ccAXAmVb.o:在功能 '主': log_2.c :(文字+ 0x5e):未定義的引用`logbase2' collect2:LD返回1級退出狀態

繼承人我的代碼:

int logbasetwo (int number) 
{ 
int test; 
for (int i = 0; i< number; i++){ 
    test = 2^i; 
    int result = i; 
} 


return result; 
} 

int main(){ 

printf("Enter a positive integer: "); 
int number = get_int(); 
int logresult; 
if (number > 0){ 
logresult=logbase2(number); 

} 


else (number < 0){ 
    printf("Not a positive number. Re-enter: "); 
    number = get_int(); 

} 

printf("Log base two of number is:%i", logresult); 


} 


return 0; 
} 
+2

更改行logresult = logbase2(number); logresult = logbasetwo(number); – Vijay 2015-02-06 12:26:48

+4

請注意,'^'是c中的異或,**不是**指數。 – Bathsheba 2015-02-06 12:27:22

+1

您可以使用''中的'log2()'來代替創建'logbasetwo()'函數。 – shauryachats 2015-02-06 12:31:24

回答

4

那麼,在你的代碼,這兩個logbase2()logbasetwo()被使用,這是不一樣的!

您已經定義了一個名爲logbasetwo()的函數,但是您調用了logbase2()

改變其中的任何一個以匹配另一個。

此外,您需要更改邏輯test = 2^i;。正如先前評論中提到的先生@Bathsheba,^運營商是針對XOR,而不是冪乘。您需要使用pow()