size_t 要包括哪个 header
Which header to include for size_t
根据cpprefernecesize_t
在各种header中定义,即
cstddef、cstdio、cstdlib、cstring、ctime、cuchar 和(C++17 起)cwchar.
我的问题是为什么 size_t
没有一个单一的定义?如果我只想要 size_t
,我应该包括哪个 header?
My question is why is there not a single definition of size_t?
std::size_t
有一个定义。它只是在多个 headers 中定义,因为那些 headers 自己使用该定义。
Which header do I include, if I just want size_t?
指定定义它的任何一个。
我的选择通常是 <cstddef>
,因为它非常小并且具有我可能需要的其他定义,例如 std::byte
。
通常,任何标准库 header 都可以将任何其他 header 的声明引入 std
命名空间,但这些声明将始终引用同一个实体,因此不会' 是任何 one-definition-rule 违规或类似的事情。 cppreference 上列出的 header 只是保证它们引入 std::size_t
.
的那些
<cstddef>
可能是 header 中最小的,也将在独立环境中可用。
但是请注意,列出的 header 中的 none 保证将 size_t
引入全局命名空间范围。如果你需要这个,你需要包括 headers 的一个 C 版本,例如#include<stddef.h>
.
根据cpprefernecesize_t
在各种header中定义,即
cstddef、cstdio、cstdlib、cstring、ctime、cuchar 和(C++17 起)cwchar.
我的问题是为什么 size_t
没有一个单一的定义?如果我只想要 size_t
,我应该包括哪个 header?
My question is why is there not a single definition of size_t?
std::size_t
有一个定义。它只是在多个 headers 中定义,因为那些 headers 自己使用该定义。
Which header do I include, if I just want size_t?
指定定义它的任何一个。
我的选择通常是 <cstddef>
,因为它非常小并且具有我可能需要的其他定义,例如 std::byte
。
通常,任何标准库 header 都可以将任何其他 header 的声明引入 std
命名空间,但这些声明将始终引用同一个实体,因此不会' 是任何 one-definition-rule 违规或类似的事情。 cppreference 上列出的 header 只是保证它们引入 std::size_t
.
<cstddef>
可能是 header 中最小的,也将在独立环境中可用。
但是请注意,列出的 header 中的 none 保证将 size_t
引入全局命名空间范围。如果你需要这个,你需要包括 headers 的一个 C 版本,例如#include<stddef.h>
.