typedefとdefineの詳細な違い(転載)


typedef                       ,                            。 #define      。         。

typedef C    ,              “  ”。 

  : 
typedef int INTEGER; 


      INTEGER   int           , : 
INTEGER a,b; 


 typedef    、  、             ,                  ,        。  : 

typedef int a[10];//  a       ,     10。 


     a    , :
a s1,s2;//     :int s1[10],s2[10] ; 

   typedef void (*p)(void)   p     void      !

#define           ,  :
#define int PARA 


          int   PARA    ! 

 :    int a,b ;          PAPA a,b;

#define C      ,typedef C++      ,   C++     , #define       ,typedef      。Typedef define             ,           。

1.   ,        

   typedef       ,        ,  typedef        。

Define     ,        ,       ,               ,        。

#define    : 
#define f(x) x*x 
main( ) 
{ 
int a=6,b=2,c; 
c=f(a) / f(b); 
printf("%d 
",c); } : 36, #define , “(X*X)”。 2. Typedef , (int,char ), ( struct), 。 : typedef int (*PF) (const char *, const char *); PF, int, const char *。 typedef , , , REAL , i : typedef long double REAL; long double , typedef : typedef double REAL; , double , typedef : typedef float REAL; #define , 、 、 。 3. #define , , 。 typedef 。 void fun() { #define A int } void gun() { // A, , // typedef, A , typedef } 4. , 。 Typedef int * pint; #define PINT int * Const pint p;//p ,p , int * const p; Const PINT p;//p ,p , const int *p; int const *p; pint s1, s2; //s1 s2 int PINT s3, s4; // int * s3,s4; 。 ,typedef define , 。 , 。 , 。