A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© megatron 初级黑马   /  2014-7-18 22:44  /  1840 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

define和typedef的区别

4 个回复

倒序浏览
#define是预处理命令,在编译处理时进行简单的替换,不做正确性检查,不管含义是否正确照样带入,只有在编译已展开的源程序时才会发现可能的错误并报错。
typedef是在编译时处理的,它在自己的作用域内给一个已经存在的类型一个别名
回复 使用道具 举报
  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.    
复制代码
回复 使用道具 举报
#define 是宏定义。
typedefine是用来给类型重命名的。
回复 使用道具 举报
这个意思差不多,得自己好好体会
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马