在 C++14 中,我想限制枚举类所持有的总位数:
enum class InstalledCapacity : uint8_t{
None,
One_1000uF,
Two_1000uF,
Three_1000uF,
One_1F,
One_3_3F,
Reserved2,
Invalid
};
using HarvestingCapability = uint8_t;
typedef struct {
InstalledCapacity installed_capacity : 3;
HarvestingCapability harversting_capability_x_15mW : 5;
}EnergyInfo;
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,我收到以下警告:
eeprom_metadata.h:51:42: warning: '<anonymous struct>::installed_capacity' is too small to hold all values of 'enum class InstalledCapacity'
InstalledCapacity installed_capacity : 3;
^
Run Code Online (Sandbox Code Playgroud)
由于我的枚举类中只有 7 个值InstalledCapacity,因此我希望只能使用 3 位。
我做错了什么,这可能吗?提前谢谢了!
没有什么问题,编译器只是评论说 3 位太小,无法容纳枚举的所有可能值,而枚举可以大到 8 位。仅仅因为所有命名枚举值都可以放入 3 位中,并不意味着 的所有可能值都InstalledCapacity可以放入该位集中。值255对于枚举来说完全有效,但无法适合您的位集。