我刚刚了解到内联使我的代码在使用函数时速度更快,但是我想知道为什么我们不内联每个函数,以通常的方式编写函数的目的是为什么我们拥有如此强大的关键字(我知道编译器选择是否内联函数,但是建议内联每个函数会更好)?
加上:使用Clion,我试图内联以下函数,但出现错误:
#include <stdio.h>
#include <time.h>
inline double maxf(int a,int b)
{
if (a>b)
return a;
return b;
}
int main() {
clock_t begin = clock();
double arr[999999]={0};
double max=arr[0];
arr[9898]=99999999;
for (int i=1;i<999999;i++)
{
max=maxf(arr[i],max);
}
clock_t end = clock();
double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
printf("%lf",time_spent);
return 0;
}
[ 50%] Building C object CMakeFiles/untitled.dir/main.c.o
[100%] Linking C executable untitled
Undefined symbols for architecture x86_64:
"_maxf", referenced from:
_main in main.c.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [untitled] Error 1
make[2]: *** [CMakeFiles/untitled.dir/all] Error 2
make[1]: *** [CMakeFiles/untitled.dir/rule] Error 2
make: *** [untitled] Error 2
有关导致此问题的原因的任何想法?
maxf
,并且未与-lm
链接。这仅在某些优化级别上发生。