黑马程序员技术交流社区

标题: define和typedef的区别 [打印本页]

作者: megatron    时间: 2014-7-18 22:44
标题: define和typedef的区别
define和typedef的区别
作者: 此生逍遥    时间: 2014-7-18 22:53
#define是预处理命令,在编译处理时进行简单的替换,不做正确性检查,不管含义是否正确照样带入,只有在编译已展开的源程序时才会发现可能的错误并报错。
typedef是在编译时处理的,它在自己的作用域内给一个已经存在的类型一个别名
作者: ⒈心只霸占沵    时间: 2014-7-18 23:08
  1. 1.define是预处理指令的一种,主要是在编译前进行文本替换,用来定义宏,称为:"宏定义",宏定义分为:带参宏第一和不带参宏定义,又叫宏替换
  2. #define kCount 4   //编译前会将文件中的所有kCount替换为4

  3. 2.typedef用于给类型起别名,能够简化类型定义,能够给其他类型取一个有意义的别名
  4. 例如:UInteger
  5. typedef  unsigned int UInteger
  6. 所以 UInteger 等同 unsigned int

  7. 两者的区别
  8. 1.一个是编译前执行的,一个是运行时的
  9. 2.两者都可以给类型起别名
  10.   例如:
  11.   typedef int Integer1
  12.   #define Integer2 int
  13.   Integer1 a=0;
  14.   Integer2 b=0;
  15. 3.当定义指针类型时
  16.   typedef char* String1;
  17.   #define String2 char*

  18.    String1 a与String2 b中的a与b都是char* 类型
  19.    String1 a,b与String2 c,d中的a与c类型相同,b与c的类型则不同
  20. 分析
  21. String1 a,b 等同于
  22.   char*a;
  23.   char* b;
  24. String2 b,d 等同于char*b,d;
  25. 分开写就是
  26. char*b;
  27. char d;
  28.   

  29.   

  30.    
复制代码

作者: 阳光地带    时间: 2014-7-19 00:41
#define 是宏定义。
typedefine是用来给类型重命名的。
作者: legendary    时间: 2014-7-19 12:45
这个意思差不多,得自己好好体会




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2