enumをビットフィールドに使ったら

比較的どうでもいいclとgccの違いを発見

typedef enum
{
    Hoge = 0,
    Foo  = 1,
    Bar  = 2,
    Baz  = 3,
}Types;

typedef struct
{
    Types bit: 2;
}StructType;

StructType v;
v.bit = Hoge;
if(v.bit == Hoge) {...}

gccだと最後の比較が正になる
clだとbitがsignedになって「0xFFFFFFFC」になる、当然Hogeとは一致しない
ビットフィールドをunsigned intにしてやるとどっちも通るが気持ち悪い
どうにかならないものか・・・
VB.NETみたく「Enum Types As UInt32」とかできれば手っ取り早いのに