typedef与define 之间的区别

可能重复:
c中的typedef和#define是否相同?
被#define和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); 

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

谢谢。

想要创建指针类型的别名时有所不同。

 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