1) #define预处理指令编译预处理时进行简单替换作正确性检查关含义否正确照样带入只有编译已被展开源程序时才会发现能错误并报错例: #define PI 3.1415926 程序:area=PI*r*r 会替换3.1415926*r*r 把#define语句数字9 写成字母g 预处理也照样带入 2)typedef编译时处理自己作用域内给已经存类型别名You cannot use the typedef specifier inside a function definition 3)typedef int * int_ptr; 与 #define int_ptr int * 作用都用int_ptr代表 int * ,二者同正前面所说 #define预处理 时进行简单替换而typedef简单替换 而采用同定义变量方法样来声明种类型也说; //refer to (xzgyb(老达摩)) #define int_ptr int * int_ptr a, b; //相当于int * a, b; 只简单宏替换 typedef int* int_ptr; int_ptr a, b; //a, b 都指向int指针,typedefint* 引入了新助记符 也说明了下面观点成立 //QunKangLi(维护成本与程序员创造力平方成正比) typedef int * pint ; #define PINT int * : const pint p ;//p更改p指向内容更改 const PINT p ;//p更改p指向内容更改 pint种指针类型 const pint p 把指针给锁住了 p更改 而const PINT p const int * p 锁指针p所指对象 3)也许您已经注意#define 语句 要行末加分号否则 会连分号块置换