typedef 与 #define 的区别

Posted 大飞歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typedef 与 #define 的区别相关的知识,希望对你有一定的参考价值。

(1)#define可以使用其他类型说明符对宏类型名进行扩展,但对 typedef 所定义的类型名却不能这样做。例如:

#define INTERGE int
unsigned INTERGE n;  //没问题
typedef int INTERGE;
unsigned INTERGE n;  //错误,不能在 INTERGE 前面添加 unsigned

(2) 在连续定义几个变量的时候,typedef 能够保证定义的所有变量均为同一类型,而 #define 则无法保证。例如:

#define PTR_INT int *
PTR_INT p1, p2;        //p1、p2 类型不相同,宏展开后变为int *p1, p2;
typedef int * PTR_INT
PTR_INT p1, p2;        //p1、p2 类型相同,它们都是指向 int 类型的指针。


与 #define 不同,typedef 具有以下三个特点:

  • 1.typedef 给出的符号名称仅限于对类型,而不是对值。
  • 2.typedef 的解释由编译器,而不是预处理器执行。并不是简单的文本替换。
  • 3.虽然范围有限,但是在其受限范围内 typedef 比 #define 灵活。
 

以上是关于typedef 与 #define 的区别的主要内容,如果未能解决你的问题,请参考以下文章

typedef和#define的用法与区别

typedef与#define的区别

typedef 与 #define 的区别

define与typedef的区别

C/C++语言typedef的用法详解以及与define的区别

C语言中typedef与#define宏的区别