Typedef をつかう


さて、すこしずつデータ構造も増えてきたので、データ型に名前をつけてみましょう。 typedef を使うことで名前をつけることができます。

例えば、 符合なし整数に毎回 unsigned int と書くのは、ちょっと面倒です。そういう場合は、 unsigned int という型に対して、uintとかいう型名をつけてみましょう。

    typedef unsigned int uint; /* typedef してみる */
    uint x = 0; /* uint = unsigned int な変数 x の定義 */ 
ちなみに、宣言した型名を外でも使う場合は、header file の方に書いておくべきでしょう(次回以降)。

個人的には、int * とかいう型名に名前をつけるのも悪くないです。 例えば、a, b という int *型の変数を宣言する場合、C では、

    int *a, *b;
と書く必要があります。正直、ちょっと嫌な感じが僕はします。しょうがないから、普段は
    int* a;
    int* b;
と書いています。でも、少し悲しい。そういうときは、一度 typedef しておくと、すっきりです。
    typedef int * int_tp;  /* int_tp という型名を宣言 */
    int_tp a, b; /* チョットすっきり? */
_tp というのをつけるのは、僕の個人的な習慣で、一般のデータ型には_tをつけて、 ポインタの場合には、_tpをつけることにしています。

それからもうひとつ。typedef の時には、

    typedef 対応する型  型名;
    typedef unsigned int uint;
と書くのが代表的な書き方です。でも、実は、もっと色々な書き方があります。 実際には、「変数とその型の宣言」を記述するのと同じフォーマットで「変数名」の代りに「型名」を 書くだけのことです。 例えば、unsigned int な変数 x と、 そのpointer である y を宣言するときは、
    unsigned int x, *y; 
と書きますが、その代りに
    typedef unsigned int uint, *uint_tp; 
と書けばいいわけです。4x4 の2次元配列の typedef をするときも
    typedef int myarray_t[4][4]; 
でOKです。 型の書き方を難しく感じる時は、typedef をつかって型名を割り付けておくと、 あとは簡単に記述することができます。 (サンプルコードdata_Cp.c)。

2001.11.16/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp