cstdlib和stdlib.h有什么区别?

Fre*_*est 47 c++ std

编写C++代码时,之间存在任何区别:

#include <cstdlib>
Run Code Online (Sandbox Code Playgroud)

#include <stdlib.h>
Run Code Online (Sandbox Code Playgroud)

除了前者主要包含在std::命名空间内?

除了编码标准和风格之外还有什么理由可以使用一个而不是另一个?

Rei*_*ica 45

第一个是C++标头,第二个是C标头.由于第一个使用命名空间,这似乎更可取.


Jer*_*fin 15

不,除了命名空间情况,它们基本相同.


klu*_*utt 5

除了编码标准和风格之外,还有什么理由可以使用其中之一吗?

是的。不推荐使用的事实stdlib.h不使用它的一个很好的理由。它实际上在 1998 年出现的第一个标准中就被弃用了。当然,它仍然存在于 C++14 中,并且可能甚至可能存在于 C++17 中(我无法访问 C++17 标准)但是由于它已被弃用,这是您不应使用它的强烈信号。也许删除的风险不是很高,但是为什么在编写新代码时要冒这个风险,那么容易避免呢?

C++14 标准

这些是不推荐使用的功能,其中不推荐使用的定义为: 本标准当前版本的规范,但已被确定为从未来修订版中删除候选功能。

...

你应该有一个非常有力的论据来使用stdlib.h而不是cstdlib

  • 这也是完全没用的,因为无论如何它都不会被删除 - 与 C 的互操作性需要这个。 (3认同)