当前位置: 技术问答>linux和unix
gcc编译含math.h程序的奇怪现象(并非未添加-lm),盼解
来源: 互联网 发布时间:2016-11-30
本文导语: 大家好, 最近学习linux下编程时发现一个小问题: 一个最简单的main.c程序 #include #include int main() { double a = 4; sqrt(a); return 0...
大家好,
最近学习linux下编程时发现一个小问题:
一个最简单的main.c程序
#include
#include
int main()
{
double a = 4;
sqrt(a);
return 0;
}
如果使用gcc而非g++编译的话,直接使用命令:
#gcc -o a main.c
编译会提示未找到sqrt的定义,这个是因为缺少了“-lm”的原因(如果是g++就不必了);
但是现在,有一种情况直接通过
#gcc -o a main.c
来编译而不报错的情况:即把sqrt(a)改成sqrt(4)!
我思之不得其解,盼高人指教,谢谢
|
编译器直接计算sqrt(4)了,可以看汇编代码,本该调用函数的地方是一个mov