宏定义define只是简单的字符替换,并不会检查错误,如果不小心写错了,它还是会带入程序中,然后在编译时进行错误查找。例如:
#define R 9
int i=R*4;//相当于i=9*4;
如果把9写成了g,它还是会带入等式,i=g*4;在编译时就会报错。
类型定义typedef给已有的类型换一个名字,如果写错了系统会自动报错,这一点与宏定义define不同,例如:
typedef int Elemtype;
Elemtype a;//此时的a就是一个整型,相当于int a;
宏定义define和类型定义typedef还有一个很大的区别,例如:
#define PINT int*
PINT a,b;//此时a是整型指针变量,而b是整型变量
typedef int* PINT;
PINT a,b;//此时a,b都是整型指针变量
所以在使用时一定要注意用宏定义define合适,还是类型定义typedef合适。