C++中的stdlib.h和cstdlib有什么主要区别?

19
我正在使用 EXIT_FAILURE 宏,因此需要包含 stdlib.h 或 cstdlib。但我不知道它们之间的区别。我是否应该使用 cXXX 风格的头文件而不是 XXX.h?
谢谢。

可能是What's the difference between cstdlib and stdlib.h?的重复问题。 - phuclv
请查看我的更新答案,链接在这里。https://dev59.com/EmYr5IYBdhLWcg3wLnVA#43016708 - Santiago Varela
2个回答

29

<cstdlib> 是在 std 命名空间中封装的 <stdlib.h> 。为了保持全局命名空间的清洁,您应该使用 <cstdlib>


17

由于EXIT_FAILURE是一个宏,所以包含哪个并没有任何区别。使用cstdlib版本将把所有函数名称放入std命名空间中,因此您可以这样说:

std::exit(0);

但是由于宏不尊重命名空间,你不能这样说:

std::EXIT_FAILURE

谢谢,但是当我包含 cstdlib 时,我仍然可以调用 exit(EXIT_FAILURE) 而不需要 std:: - Brian
@Brian 是的,exit函数将同时存在于全局和std命名空间中。 - anon
此外,还声明了一些重载函数来处理 strtol() 的常量性问题和类似的问题。 - Alex Cohn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接