この記事では型の定義について記載します。ここではtypedefにて型を定義するときを想定しています。構造体、列挙型、ビットフィールドの定義が主に該当します。typedefは文法上見落としやすい落とし穴が意外に多いので、要注意です。 ビットフィールドに使用する型はsigned intかunsigned intにする(intも不可) C言語の規格上、ビットフィールドに使える型は、int, signed int, unsigned intのどれかです。また、ビットフィールドの場合はintは符号付か符合無しになるかはコンパイラ依存なので、明示的にsignedもしくはunsignedをつけてください。 違反コード typedef struct { unsigned long member_a: 2; // 型がlong. int member_b: 2; // 符号(signed or unsign