『c専門家プログラミング』ノート--defineとtypedefの違い

873 ワード

#include <stdio.h>

#define peach int

typedef int banana;



int main(void){

        unsigned peach a;

        unsigned banana b;

        return 0;

}

 
上のコードでは、
 
unsigned banana b;

ローのコンパイル中にエラーが発生します.
 
typedefは徹底的な「パッケージ」タイプであるため、#defineは単純なテキスト置換にすぎない.
また見て、
 
#include <stdio.h>

#define peach char*

typedef char* banana;



int main(void){

        peach a,b;

        banana c,d;

        printf("sizeof(a)=%d
",sizeof(a)); printf("sizeof(b)=%d
",sizeof(b)); printf("sizeof(c)=%d
",sizeof(c)); printf("sizeof(d)=%d
",sizeof(d)); return 0; }

実行結果:
 
sizeof(a)=4 sizeof(b)=1 sizeof(c)=4 sizeof(d)=4