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
。