c++ - 我应该使用 std::old_c_functions 还是只使用 old_c_functions?

标签 c++

<分区>

我想使用 C 库,例如 cstdiocstdlib,我可以同时使用它们:

int i = atoi("123");

int i = std::atoi("123");

两者都很好。我应该使用哪一个?它们等价吗?

最佳答案

为了可移植性,您应该使用 std 版本,原因有二:

  • 该标准不保证将 C 库函数转储到全局命名空间中;它只允许实现这样做。这意味着如果您更改实现,您的代码可能无法编译。
  • 某些函数(不是 atoi,而是数学函数,例如)在 C++ 中有额外的重载。至少有一个流行的库将 C 重载转储到全局命名空间中,而不是 C++ 重载。这意味着如果您更改实现,您的代码可能会以奇怪且令人恼火的方式改变其行为。

关于c++ - 我应该使用 std::old_c_functions 还是只使用 old_c_functions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21979356/

相关文章:

c++ - 在C++中将子类插入到父类(super class)数组中

c++ - 正则表达式替换为c++ 11中的回调?

c++ - 没有匹配的函数来调用 'connect'(QT)

c++ - 使用 constexpr 遇到麻烦

C++ 如何获取对包含对象的引用?

c++ - 在声明对象之前在全局函数中使用类的成员函数

C++ 编译错误

c++ - Android 平台上的 native C/C++ 代码

C++ - 来自 std::string 的意外输出

c++ - 你如何在 C 中使用 void 指针?