我一直收到警告,说我的函数有一个未定义的引用,并没有真正对我说或如何解决它。这是错误
log_2.c:在函数'main'中:log_2.c:29:warning:implicit 函数'logbase2'/tmp/ccAXAmVb.o的声明:在函数中 ' main':log_2.c :(。text + 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;
}
答案 0 :(得分:4)
好吧,在您的代码中,使用了logbase2()
和logbasetwo()
,这些都不一样!!!
您已定义了一个名为logbasetwo()
的函数,但您调用了logbase2()
。
更改其中任何一个以匹配其他任何一个。
此外,您需要更改逻辑test = 2 ^ i;
。正如 @Bathsheba 先前的评论中提到的那样,^
运算符用于XOR
,而不是取幂。
您需要使用pow()
。