将旧版C代码头更新为C ++ stdlib

时间:2012-08-31 19:35:54

标签: c++

继承了大量遗留的C代码,并且正在将其移植到使用GCC(g ++)的Linux上进行编译。因为我们将来会使用C ++,而且我正在修复" custom"无论如何库头文件(和编译器警告),更新旧C头以使用较新的C ++样式是安全的。

这样的东西
#include <cstdlib>

而不是

#include <stdlib.h>

据我所知,两者之间的唯一区别是cstdlib在std::命名空间中有内容。

有什么事情会让这个坏主意吗?

2 个答案:

答案 0 :(得分:1)

除了命名空间之外,它们(在大多数系统上)完全相同。

答案 1 :(得分:1)

您的代码可能会以非常微妙的方式发生变化,因为C ++标准头文件使用重载,其中C使用不同的名称。这最有可能导致cmath出现问题。

stdlib.h不会去任何地方,所以请随时继续使用它。

例如,比较:

#include <iostream>
using namespace std;

#include <stdlib.h>
#include <math.h>

int main(void)
{
    double x = -2;
    cout << (3/abs(x)) << endl;
    return 0;
}

结果beforeafter切换到C ++标头是非常不同的,即使在两种情况下使用完全相同的C ++编译器和选项。