我应该使用std :: old_c_functions还是old_c_functions?

时间:2014-02-24 05:11:20

标签: c++

我想使用cstdiocstdlib之类的C库,我可以同时使用它们:

int i = atoi("123");

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

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

1 个答案:

答案 0 :(得分:7)

为了便于携带,您应该使用std版本,原因有两个:

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