当前位置: 技术问答>linux和unix
代码移植,编译器g++从4.1.2升级到4.3.4带来的问题
来源: 互联网 发布时间:2016-11-30
本文导语: 同样的代码在suse10(g++版本是4.1.2)正常编译通过,但是在suse11(g++版本是4.3.4)上编译出现很多错误。所报编译错误大多是某些函数找不到,如下: error: ‘strtoul’ was not declared in this scope; error: ‘atoi’ was not de...
同样的代码在suse10(g++版本是4.1.2)正常编译通过,但是在suse11(g++版本是4.3.4)上编译出现很多错误。所报编译错误大多是某些函数找不到,如下:
error: ‘strtoul’ was not declared in this scope;
error: ‘atoi’ was not declared in this scope;
error: ‘strlen’ was not declared in this scope;
...等等;
解决方案是:明确地包含函数所在的类库;
#include
#include
...
using namespace std;
仔细观察源代码,发现以前的版本只有一句using namespace std; 没有包含指定的类库,可以在suse10(g++ 4.1.2)编译通过,大家解释一下为何4.1.2的版本编译不报错,编译器是怎么找到指定函数的?
error: ‘strtoul’ was not declared in this scope;
error: ‘atoi’ was not declared in this scope;
error: ‘strlen’ was not declared in this scope;
...等等;
解决方案是:明确地包含函数所在的类库;
#include
#include
...
using namespace std;
仔细观察源代码,发现以前的版本只有一句using namespace std; 没有包含指定的类库,可以在suse10(g++ 4.1.2)编译通过,大家解释一下为何4.1.2的版本编译不报错,编译器是怎么找到指定函数的?
|
应该是4.3.4检查更严格了,要求函数在使用之前必须先声明
|
写代码还是标准点好