限制枚举类的位数

Mih*_*los 3 c++ c++14

在 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 位。

我做错了什么,这可能吗?提前谢谢了!

use*_*989 5

没有什么问题,编译器只是评论说 3 位太小,无法容纳枚举的所有可能值,而枚举可以大到 8 位。仅仅因为所有命名枚举值都可以放入 3 位中,并不意味着 的所有可能值都InstalledCapacity可以放入该位集中。值255对于枚举来说完全有效,但无法适合您的位集。