继承了大量遗留 C 代码,并且正在将其移植到使用 GCC (g++) 在 Linux 上编译。由于我们将在未来使用 C++,并且无论如何我都会修复“自定义”库头文件(以及编译器警告),因此更新旧的 C 头文件以使用较新的 C++ 样式的头文件是否安全。
所以像
#include <cstdlib>
代替
#include <stdlib.h>
据我所知,两者之间的唯一区别是 cstdlib 在std::
命名空间中有东西。
有什么会让这成为一个坏主意吗?
继承了大量遗留 C 代码,并且正在将其移植到使用 GCC (g++) 在 Linux 上编译。由于我们将在未来使用 C++,并且无论如何我都会修复“自定义”库头文件(以及编译器警告),因此更新旧的 C 头文件以使用较新的 C++ 样式的头文件是否安全。
所以像
#include <cstdlib>
代替
#include <stdlib.h>
据我所知,两者之间的唯一区别是 cstdlib 在std::
命名空间中有东西。
有什么会让这成为一个坏主意吗?
除了命名空间之外,它们完全相同(在大多数系统上)。
由于 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;
}