以前のリビジョンの文書です
構造体、共用体、ビットフィールドを使うと変数の管理が格段楽になり、ソースが見やすくなります。C言語を使う中でぜひマスターしてほしい項目だと思います。難しいと思っている人も多いようですが、フォーマットさえわかればそれをコピペでもして、使えると思います。
まず、構造体から説明します。でも、ライントレーサーを作ったみなさんなら、H8やSHのレジスタをいじるときに . で変数を区切る表現を使ってますよね(実は共用体なんだけどまあ、気にしない)あれこそが構造体です。 構造体を使うと変数を階層化することができます。イメージとしては下のような具体例を考えるといいと思います。
米という共通の属性をもつものがあるとします。コシヒカリと、ササニシキと、ヒトメボレと、あきたこまちとでもしときましょう。この時に別々に4種の銘柄を考えるのではなく
米.コシヒカリ 米.ササニシキ 米.ヒトメボレ 米.あきたこまち
といったように米というなかの中の何かと考えるとわかりやすいですよね。
さらに同じコシヒカリでも産地が違ったりしますよね。そういう時は
コシヒカリ.新潟県 コシヒカリ.秋田県 コシヒカリ.北海道
みたいにして区別できます。ここでコシヒカリはひとつ上の階層では米でしたから、
米.コシヒカリ.新潟県 米.コシヒカリ.秋田県 米.コシヒカリ.北海道
となります。つまり、入れ子構造ですね。
構造体というのは今の例のように変数名を入れ子構造にして管理しようという概念です。さて、実際の文法をみていきましょう。ここでは詳しくはかかないので適当にこの表現を真似するなりしてください。
typedef struct{ struct{ char niigataken; char akitaken; char hokkaidou; }koshihikari int sasanishiki; float hitomebore; unsigned char akitakomachi; } kome_t