【发布时间】:2017-10-21 10:20:52
【问题描述】:
我想知道 C++ 中的布尔值是否实际上是 1 位变量。 我正在为我的内核开发 PMM,使用(可能是多维的)布尔数组会很安静。但是如果 C++ 中的 bool 长度为 8 位,我不想浪费空间......
编辑:bool[8] 是 1 字节长吗?还是 8 字节?我可以在使用 gcc 时声明类似bool bByte[8] __attribute__((packed)); 的东西吗?
正如我所说:我正在编写一个内核。所以我不能包含标准库。
【问题讨论】:
-
A
bool可以是 1 个字节或更多,具体取决于实现。见fundamental types。 -
它是1字节(8位),使用位域或手动编写代码来访问内存缓冲区中的位。
-
至于你的recent question,你似乎对你想要实现的目标很不满意。我会让你有机会在 g-makulik
t-online.de 私下联系我,通过电子邮件讨论这个问题,并获得一些严肃而有根据的建议。否则,从this list 阅读一些教科书应该同样为您服务。 -
@Pavel:请提供对标准的参考,其中 1)一个字节保证为 8 位,2)
bool保证为 1 个字节。 -
@Olaf 我写的是代码,而不是标准,我更关心我在现实中看到的东西。那些在
sizeof(bool) != 1或CHAR_BIT != 8的晦涩环境中工作的人不会问这些类型的问题。问题主要是布尔变量是否占用 1 位。
标签: c++ memory-management kernel