typedef和define之间的区别

时间:2012-08-30 17:22:12

标签: c

  

可能重复:
  Is typedef and #define the same in c?
  Confused by #define and typedef

以下是否有任何区别:

#define NUM int

...

NUM x;
x = 5;
printf("X: %d\n", x);

而且:

typedef int NUM;

...

NUM x;
x = 5;
printf("X : %d\n", x);

两个测试都编译运行没有问题。那么,它们是等价的吗?

感谢。

1 个答案:

答案 0 :(得分:21)

如果要创建指针类型的别名,则会有所不同。

typedef int *t1;
#define t2 int *

t1 a, b; /* a is 'int*' and b is 'int*' */
t2 c, d; /* c is 'int*' and d is 'int'  */

此外,typedef遵守范围规则,您可以声明块的本地类型。

另一方面,如果要在预处理程序指令中管理类型,可以使用#define