gpt4 book ai didi

c++ - 什么头文件在 C++ 中定义了 NULL?

转载 作者:IT老高 更新时间:2023-10-28 12:30:45 27 4
gpt4 key购买 nike

根据C++ primer , <cstdlib> header 定义 NULL . cpluspplus说它在 <cstddef> 中定义.

最终,如果不包含正确的标题,我想NULL不能被引用。

据我所见,它可以被引用并生成程序,并且在仅包含 <iostream> 之后编译和运行时不会出现警告或错误。

请帮助我理解这一点。

最佳答案

C 标准要求在 locale.hstddef.hstdio.hstdlib 中定义 NULL。 hstring.htime.hwchar.h

C++ 标准要求在 c* header 中定义 NULL,这些 header 对应于每一个。

C 标准对标准可以定义的名称非常严格——每个标准 header 必须精确定义标准要求该 header 定义的名称。它可以定义的唯一其他名称是为实现保留的名称,例如以下划线开头,后跟另一个下划线或大写字母的名称。

C++ 标准在这方面更为宽松——包含任何一个标准头文件与包含任何或所有其他标准头文件具有相同的效果。

从实际的角度来看,C++ 实现过去常常充分利用这种许可性——也就是说,包括一个标准头文件,经常从许多其他标准头文件中定义名称。最近的实现往往更像 C 标准所要求的那样工作,与每个 header 更接近,只定义由该 header 定义的名称。他们可能仍然没有 C 标准要求的那么严格,但比以前更接近(通常)。

关于c++ - 什么头文件在 C++ 中定义了 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12023476/

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