1、菜鸟养成记第一篇章
typedef 与 #define的问题
有下面两种定义pStr数据类型的方法,两者有什么不同?哪一种更好一点?
typedef char* pStr;
#define pStr char*;
答案与分析:
通常讲,typedef要比#define要好,特别是在有指针的场合。
请看例子:
typedef char* pStr1;
#define pStr2 char *
pStr1 s1, s2; // char* s1; char* s2;
pStr2 s3, s4; // char* s3, s4;即 char s4;
在上述的变量定义中,s4则定义成了char,不是我们所预期的指针变量,根本原因就在于
#define只是简单的字符串替换而typedef则是为一个类型起新名字。
上例中define语句必须写成 pStr2 s3, *s4; 这这样才能正常执行。