C/C++ 的 Qt Creator 警告枚举的填充

Qt Creator with C/C++ warns about padding for enums

所以我有一个完全由以下组成的数据结构:

然而,在每个 enum 旁边,Qt Creator 会放置一个关于用一些数据结构填充数据结构的预分析假设警告(符号是一个空的黄色三角形 - 只有它的轮廓)字节的目的,我收集,对齐结构中的下一个元素。

这有什么意义,因为这是(或应该是)所有字节?我的 enum 不是字节吗?我可以强制编译器使它们成为字节吗?我可以强制编译器在某些情况下不对齐,还是 C 标准禁止这样做?

更多信息:我正在编写 C89,使用 Qt 5.12.11、Qt Creator 4.15.0(基于 Qt 5.15.2)、带有 Ninja 1.10.2 的 CMake 3.19.4 并使用 minGW/gcc 进行编译7.3.0.

谢谢!

C++ 如今可以指定 enum 底层类型 ,但这是很新的(C++11,不是 C99,更不用说 C89)。所以不,你不能假设它是一个字节,也不能直接强制它。但是你可以使用位域(:3 最多可以有 8 个值)

此外,C++ 中的 bool 不是 byte-sized 的定义;它可以更大。