#define&typedefの違い

1029 ワード

1.処理時間が異なる1)#defineはプリプロセッサによって制御され、コンパイル前に操作が完了する.2)typedefはコンパイラによって制御され,コンパイル時に操作が完了する.
2.役割ドメイン1)#define役割ドメインはグローバルであり、コンパイラが#defineを操作できないため、その役割ドメインを制御できない.2)typedefの役割ドメインは、コンパイラが制御できるため制限されている.
3.使用1)#defineは単なる置換コードであり,正しいかどうかはチェックしない.2)typedefは、「他の要素のタイプに別名を1つ追加する」のように使用されることが多い.例:
typedef int* int_p1;
int_p1 a, b, c;  // a, b, and c are all int pointers.

#define int_p2 int*
int_p2 a, b, c;  // only the first is a pointer!
const pint p1 = &i1;    //p ,p ,  int * const p;  
const PINT p2 = &i2;    //p ,p ,  const int *pint const *p