2015-02-06 142 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()