关于c语言中使用typedef与define之间的区别
以下是示例代码:便于我们区分两者之间区别
#include <stdio.h>
#define INT_D int*
typedef int* int_p;
int main()
{
printf("hello world\n");
INT_D a,b;
int_p c,d;
int num=8;
a=#
b=#
c=#
d=#
return 0;
}
如果让你去猜文中哪一个不是指针变量,是否在不拿代码去测试的情况下才出来呢;其实这段代码中变量b不是指针地址,当我们去编译的时候将会报以下的错误:
其实导致这个错误的原因是因为宏定义define是在预处理过程进行宏替换,只是进行了替换成:
//使用宏替换后的结果#define :
int (*a),b;
//使用起别名typedef的结果:
int *c,*d;
(1)使用define只是单纯地进行宏替换,并不会过多地操作,因此就导致了,替换后,编译器把b看成了是int类型的变量
(2)而typedef是给原来地类型声明一个新的变量类型,因此typedef其实还是原来按照其原来的类型定义变量的规则等去定义变量,因此使用typedef后,定义变量是不受影响的