フラグに列挙子の値を使用しています:
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 は、基になる列挙型としてsigned int (または short または char) を使用します。私が見つけることができる唯一のオプションは、signedness ("--enum-is-int") ではなく、サイズに関連しています。