我需要使用作用域枚举,以便将它们作为特定类型传递给我们的串行器。 我已为Enum1
的枚举成员提供了明确的整数值。
我已经将符合上述描述的两个作用域枚举放入位域中
enum class Enum1 {
value1 = 0x0,
value2 = 0x1,
value3 = 0x2
};
enum class Enum2 {
value1 = 0x0,
value2,
value3,
// ...
value14
};
struct Example {
Enum1 value1 : 2;
Enum2 value2 : 6;
}
现在,无论我在哪里使用Example
类型,我都会收到警告“'Example::value1'太小,无法容纳所有值'Enum1'”,对于Enum2
也是如此。请注意,对于我们定义的值,情况并非如此,我们根本不关心这些值之外的值。这在我们的构建过程中非常严重,并且项目又大又复杂,我们不想扫描许多这些警告(而且有很多)。
我查看了GCC(G ++)标志,以禁用特定警告。我可以通过命令行传递一个吗?如果可能的话,最好使用警告#pragma在局部禁用它。
在这一点上,改变代码结构的空间很小,但我们真的需要消除这些虚假警告。
编辑:添加标识符更改的作用域枚举。