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」とかできれば手っ取り早いのに