JoM*_*oMP 0 c compiler-errors logarithm
所以我们在C中有这个程序,我们需要使用base-2对数函数,得到n的基数2的对数.这是代码:
#include <math.h>
int partSize(int n) {
return log2(n);
}
Run Code Online (Sandbox Code Playgroud)
但是在编译时,它会给我们以下警告.
sim.c:在函数中
partSize:sim.c:114:警告:内置函数的不兼容隐式声明log2
这是我们使用的命令
gcc $file -o $name.out -lm
Run Code Online (Sandbox Code Playgroud)
这就是99.99999%的时间,当有人说"这个世界上可用的基本功能不起作用"时,他们就错了.这个基本打破的时间的一小部分,已经有一个军队在某个地方有干草叉.
#include <math.h>
#include <stdio.h>
int partSize(int n){
return log2(n);
}
int main(int argc, char *argv[]) {
int ret = -1;
ret = partSize(16);
printf("%d\n", ret);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译:
> gcc -std=c99 a.c -o log2.out -lm
> ./log2.out
> 4
Run Code Online (Sandbox Code Playgroud)
是的,它正在发挥作用.
在C中,使用先前未声明的函数构成函数的隐式声明.在隐式声明中,返回类型是int.因此,错误告诉您log2()未在代码中定义导致您未发布的代码中的某些问题.
当我跳过-lm我得到:
ac :(.text + 0x11):未定义引用`
log2'colle2:ld返回1退出状态
..看起来不对.好的,当我添加-lm但删除#include <math.h>我得到:
ac:在函数'partSize'中:
ac:5:5:警告:函数'log2'的隐式声明[-Wimplicit-function-declaration]
嘿,这是你的警告!所以你可能是正确的,-lm但是由于某些原因,你#include math.h有问题.可能是这样的: