C语言typedef与#define的区别

typedef和#define

define 没有参加编译,在预处理的时候就被替换掉了。

typedef参加编译和链接。typedef是重命名,可以为枚举结构体等等重新命名,提高代码整洁。

一、typedef的用法

C语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:

typedef    int       INT;
typedef   (int*)   pINT;

typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点。

二、define的用法

define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了,但也因此难以发现潜在的错误及其它代码维护问题,它的实例像:

define   FALSE        0
define   TRUE         1
define   Add(a,b)     ((a)+(b));
define   Loop_10      for (int i=0; i<10; i++)

三、typedef与#define的区别

  • #define 归预处理器管,typedef 归编译器管。
  • #define 是替换,typedef是重命名

个人结论:这两个都少用

猜你喜欢

转载自blog.csdn.net/csdn_kou/article/details/80159704