define与typedef区别
define代表替换,typedef代表别名,可以从中文意义上来理解他们的区别。
define是在编译之前,编译器会将一些内容替换成另外一些内容,并且是全局的,
如下:
#define FUNCTION test
注释:会将代码里的FUNCTION替黄成test
#define FUNCTION(x) void test(x){x++;}
注释:可带上参数,如x
#define FUNCTION(x) do{ x++}while(0)
注释:或直接替换成操作
typedef是别名,给一些类型,变量,结构体,联合体之类的起一个别名,非全局,
如下:
typede int aaa;
注释:这意味着我们可以使用aaa x;(这代表int x;)
typedef struct val_struct val;
注释:我们以后要使用val_struct类型的变量时,可以直接
val aaa;
而不需要
val_struct aaa;
来获取一个结构体变量。
别名在一些自定义类型名称过于复杂,太长的情况下使用。
注意,define不是程序语句,不需要加分号,typedef是程序语句,需要加分号