尽量用typedef,避免使用define
#define PINT int *
typedef int * SINT;
从形式上看它们相似,但在实际使用中却不相同。
PINT e,f;
SINT g,h;
在经过宏替换后变为:
int a,b;
INT2 c,d;
int * e,f;
SINT g,h;
在上面的变量中,变量a和b为整型变量,变量c和d也为整型变量;在这里我们看不出宏定义和数据类型定义的区别。而变量e为整型指针变量,变量f为整型变量;变量g和h则均为整型指针变量,因为SINT是一个类型说明符。由这个例子可见,宏定义虽然也可表示数据类型,但毕竟是作为字符替换。在使用时要分外小心,以避出错。