2

继承了大量遗留 C 代码,并且正在将其移植到使用 GCC (g++) 在 Linux 上编译。由于我们将在未来使用 C++,并且无论如何我都会修复“自定义”库头文件(以及编译器警告),因此更新旧的 C 头文件以使用较新的 C++ 样式的头文件是否安全。

所以像

#include <cstdlib>

代替

#include <stdlib.h>

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

有什么会让这成为一个坏主意吗?

4

2 回答 2

1

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

于 2012-08-31T19:37:40.057 回答
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;
}

即使在两种情况下使用完全相同的 C++ 编译器和选项,切换到 C++ 头文件之前之后的结果也大不相同。

于 2012-08-31T19:45:55.587 回答