我正在为标志使用枚举器值:
typedef enum
{
a = 0x00,
b = 0x01u, // the u has no influence, as expected
c = 0x02u, // the u has no influence, as expected
...
} enum_name;
volatile unsigned char* reg = SomeAddress;
*reg |= b;
根据 MISRA-C:2004 位操作不得使用有符号类型进行。不幸的是,我的编译器 IAR 使用有符号int(或 short 或 char)作为枚举的基础类型,我能找到的唯一选项与大小有关,而不是有符号性(“--enum-is-int”)。