有下面两种定义pStr数据类型的方法,两者有什么不同?哪一种更好一点?
typedef char* pStr;
#define pStr char*;
typedef:如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾;如果放在某个函数内,定义域就是从定义开始直到该函数结尾;
#define:不管是在某个函数内,还是在所有函数之外,作用域都是从定义开始直到整个文件结尾。
typedef是在C和C++编程语言中一个关键字,所以要符合语法,加分号结尾。
define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。
上面这句话是错误的,这样用了后,后面利用 pStr 会出错的,因为后面多了个引号。
hayden 的介绍很全面了。
typedef是类型
define直接会去替换程序中的字符