Notice : 内容無保証。禁無断転載。リンク自由。

1.3 typedef と #define の違い

今の例では何が便利なのか良くわかりませんね。 #define で十分じゃないかと思った方、まったくです。 (#define integer int でも同じ事ができる。)

でも次の例を見てください。

typedef char*   cpTyp1 ;
#define cpTyp2  char*

cpTyp1  cp1, cp2 ;
cpTyp2  cp3, cp4 ;

両方とも、

[型] [変数名1], [変数名2] ;

という形をしていますね。 こういう形の場合、 [変数名1] と [変数名2] は同じ型を持つはずですが...

cpTyp1 を使って宣言されたインスタンス、 cp1, cp2 は供に char* 型となります。 つまり、typedef は cpTyp1 という [型] を作り出しました。

ところが、cpTyp2 を使って宣言されたcp3, cp4は、 マクロが展開されて、

char*   cp3, cp4 ;

つまり、

char    *cp3, cp4 ;

となるので、cp3 は char* 型、cp4 は char 型 になります。 つまり、#define では [型] を作り出せないのです。


[ <前 ][ 目次 ][ 次> ]
トップページに戻る