|
一、比较
1、typedef和#define不同,不是简单的文本替换
2、typedef符合范围规则,使用typedef定义的变量类型其作用范围限制在所定义的函数或文件内,主要是看这个变量定义的位置,而#define定义并没有这样的特点。
3、#define独有的特点:可以使用#ifdef,#ifndef,#undef
4、typedef可以简化复杂的变量声明
5、在C语言编程规范中提到使用#define定义时,如果定义中包含表达式,必须使用括号;而使用typedef就没有必要这样,举个例子:
#define f(x) 100-x
main()
{
int a=6,b=2,c;
c=f(a)*f(b);
printf("%d\n",c);
}
运算过程为100-x*100-x=100-6*100-2得出的结果和我们预期的完全不同
因此需要改为#define f(x) (100-x)
若用typedef 就不会有上面问题
|
|