g++的一个奇怪问题, 无法使用数学库函数?
同样的一个源码, 如果保存成c文件, 用gcc编译可以通过和使用, 如果用g++编译无法通过. 如果保存成c++文件, 用g++ 编译也无法通过. 原因是abs() 函数无法找到? 加了 -lm 也没用.
请问这是什么原因? 需要加什么参数吗?
ideawu@debian:~/study_sdl/lian$ cat te.cpp
#include <math>
int main(int argc, char *argv[]){
abs(1);
return 1;
}
ideawu@debian:~/study_sdl/lian$ g++-4.0 te.cpp -lm
te.cpp:1:16: error: math: No such file or directory
te.cpp: In function ‘int main(int, char**)’:
te.cpp:4: error: ‘abs’ was not declared in this scope
ideawu@debian:~/study_sdl/lian$ cat te.c
#include <math.h>
int main(int argc, char *argv[]){
abs(1);
return 1;
}
ideawu@debian:~/study_sdl/lian$ g++-4.0 te.c -lm
te.c: In function ‘int main(int, char**)’:
te.c:4: error: ‘abs’ was not declared in this scope
ideawu@debian:~/study_sdl/lian$ gcc-4.0 te.c
ideawu@debian:~/study_sdl/lian$
[解决办法]
将路径配置进GCC的include当中
[解决办法]
估计是因为c++的类型检测比c严格所致...
[解决办法]
在c里面,可以不定义一个函数就使用它,但是C++不行。
[解决办法]
加个编译参数 -lm