最近编译代码, 眼睛扫了一下, 无意中看到一个刺眼的warning: call will abort at runtime
回看代码, 果然有误, 虽然通过编译, 但运行时有出错危险。
在大型代码编译中, 几乎不可能清楚所有warning, 但至少要保证:
1. 编译出库
2. 搜索abort, 无对应信息
3. 搜索runtime, 无对应信息
4. ldd -r 看一下依赖
特别是在发布的时候, 尤其要注意这些。 看看下面demo:
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int, int> m;
m[1] = 2;
map<int, int>::iterator it = m.begin();
printf("hello %d", *it);
}
编译一下, 呵呵哒, 有call will abort at runtime这个warning