gpt4 book ai didi

c++ - 为什么 malloc 在全局命名空间中?

转载 作者:可可西里 更新时间:2023-11-01 18:31:23 26 4
gpt4 key购买 nike

据我了解,C 库的 C++ 版本喜欢 stdlib.h 的原因之一( cstdlib ) 被引入是为了不污染全局命名空间。

但事实证明我可以使用 malloc在全局命名空间中,即使我没有 #include <stdlib.h> .

那我为什么要#include <cstdlib>然后使用 std::malloc

(我使用的是 g++ 4.8.2 版)

最佳答案

过去曾要求 C 头文件 (*.h) 只将名称放入全局命名空间,而相应的 C++ 头文件只将名称放入 std。 .结果证明这是不切实际的,而且通常没有人遵循。因此,标准委员会标准化了现有的做法,并更改了规则,以便 C 头文件必须将名称放入全局命名空间并且可以将它们放入std。 ,并且 C++ header 必须将名称放入 std可能将它们放入全局命名空间。

旧规则不切实际的原因很简单,它需要复制命名空间 std 内的所有 C 头文件内容。 ,具有相应的维护负担,需要更新两套代码。除此之外,在某些情况下,C 头文件由完全独立的开发团队处理。这种方法的成本令人望而却步。

要回答最后一个问题,请使用 #include <stdlib.h>malloc或使用 #include <cstdlib>std::malloc .

关于c++ - 为什么 malloc 在全局命名空间中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34357656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com