gpt4 book ai didi

c++ - CHAR_BIT 的更好名称?

转载 作者:IT老高 更新时间:2023-10-28 22:23:30 26 4
gpt4 key购买 nike

我只是 checking an answer并意识到 CHAR_BIT没有像我期望的那样由标题定义,甚至没有 #include <bitset> , 在较新的 GCC 上。

我真的需要#include <climits>只是为了获得 CHAR_BIT 的“功能” ?

最佳答案

您可能知道,实现是否要包含其他 header 是未指定的。这是允许的,但不是强制性的。 (§17.4.4.1)所以你要么必须明确,要么知道你的保证。

C++ 头文件必须包含另一个头文件的唯一情况是它需要在另一个头文件中定义。例如,<bitset>需要包含<cstddef>对于 std::size_t ,因为这在标准中明确说明。 (对于这个例子,第 23.3.5 节)

作为反例,请考虑 <limits> .它可能包括<climits>并定义 numeric_limits 的值就其中的宏而言,它经常这样做,因为这对于实现来说是最简单的。但是所有标准都说的是:“等效CHAR_MINSHRT_MINFLT_MINDBL_MIN 等。”但并没有说必须按照这些来实现,这意味着<climits>不必包括在内。

因此,您保证的唯一方法是CHAR_BIT定义是通过包含 <climits>或其他一些明确声明必须包含它的标题。据我所知,没有人必须这样做;一个实现可以自由地在任何需要的地方硬编码值,例如,或者包括 <limits>并使用 std::numeric_limits<unsigned char>::digits (相当于)。

关于c++ - CHAR_BIT 的更好名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2688801/

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