【问题标题】:What's the main difference between stdlib.h and cstdlib in C++?C++ 中 stdlib.h 和 cstdlib 之间的主要区别是什么?
【发布时间】:2011-02-20 07:43:46
【问题描述】:

我正在使用 EXIT_FAILURE 宏,所以我需要包含 stdlib.h 或 cstdlib。但我不知道有什么区别。我应该使用 cXXX 样式的头文件而不是 XXX.h 吗?

谢谢。

【问题讨论】:

标签: c++


【解决方案1】:

<cstdlib> 只是 <stdlib.h> 包装在 std 命名空间中。你应该使用<cstdlib> 来保持你的全局命名空间干净。

【讨论】:

    【解决方案2】:

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

    std::exit(0);
    

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

    std::EXIT_FAILURE
    

    【讨论】:

    • 谢谢,但是当我包含cstdlib 时,我仍然可以在没有std:: 的情况下调用exit(EXIT_FAILURE)
    • @Brian 是的,退出函数将在全局和 std 命名空间中,
    • 另外,声明了一些重载来处理constness problem of strtol() 和类似的问题。
    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 2015-08-22
    • 2015-08-06
    • 2011-03-06
    • 2013-12-23
    • 2017-04-28
    • 2011-04-14
    • 2010-09-17
    相关资源
    最近更新 更多