看程序:
#define T int *
typedef int * Y
T a, b;
Y c, d;
结果:b 为int, a、c、d 都是int *。分析: int *a,b; 只有a是指针,b不是,而c和d都是Y类型(也就是int*)。
前者是一个宏,编译器仅做复制替换。
后者是一个类型别名,形式上相当于定义了新的类型。
另外#ifndef #define #endif 是预处理,为了防止头文件被重复引用。
看程序:
#define T int *
typedef int * Y
T a, b;
Y c, d;
结果:b 为int, a、c、d 都是int *。
另外#ifndef #define #endif 是预处理,为了防止头文件被重复引用。