C typedef和define之间的区别

C typedef和define之间的区别,c,C,可能重复: 以下各项之间是否有任何区别: #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

可能重复:

以下各项之间是否有任何区别:

#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