黑马程序员技术交流社区

标题: 求解 #define和typede区别 [打印本页]

作者: MEIMEIAA    时间: 2015-8-7 01:07
标题: 求解 #define和typede区别
#define是在预处理完成的,typede是在编译时处理的,它不是作用简单的代换,而是对类型说明符重新命名,被命名的标识符具有类型定义说明的功能!
被命名的标识符具有定义说明的功能是什么意思
可以理解为
例:typede int a
     a b=0;
给int起的别名是a,再用a去定义一个变量吗?
求解,还有其他的区别吗?
作者: MEIMEIAA    时间: 2015-8-7 20:18
没人理我,哎!是不是很简单的东西啊!
作者: 花漾    时间: 2015-8-7 21:41
typedef和宏它们针对的软件都不一样.
宏是预处理器的任务, 比如说:#define A 10, 预处理器在读取这行后, 它会把程序以后的所有大写字母A都替换成10(需要全字匹配). 我们写的代码必须通过预处理器处理后, 才会被编译器编译.

而typedef是针对的编译器, 不是预处理器的任务. 编译器读取typedef unsigned int UINT;后, 它会在以后的代码中, 认为UINT就是unsigned int, 也就是说对编译器来讲又多了一种数据类型, 但是这种数据类型和unsigned int是一样的.
作者: 墨琰    时间: 2015-8-7 22:02
挺好的啊,楼主加油哦
作者: wanghui001001    时间: 2015-8-7 22:30
还没看到这呢关键。。。。
作者: MEIMEIAA    时间: 2015-8-7 23:31
花漾 发表于 2015-8-7 21:41
typedef和宏它们针对的软件都不一样.
宏是预处理器的任务, 比如说:#define A 10, 预处理器在读取这行后, 它 ...

谢谢!知道了  一直有点绕  {:2_39:}
作者: MoonLove    时间: 2015-8-8 10:19
同新手,说一下自己的理解,如果有什么不对的地方欢迎指出。
比如#define a 10 简单来说就是在编译前使用类似于文本编辑中的替换功能将所有的a替换成10
而typedef是在编译时处理的,它在自己的作用域内给一个已经存在的类型一个别名,就像是你的小名一样。
作者: MEIMEIAA    时间: 2015-8-14 19:22
MoonLove 发表于 2015-8-8 10:19
同新手,说一下自己的理解,如果有什么不对的地方欢迎指出。
比如#define a 10 简单来说就是在编译前使用类 ...

谢谢!理解了  一起加油!
作者: MEIMEIAA    时间: 2015-8-14 19:25
墨琰 发表于 2015-8-7 22:02
挺好的啊,楼主加油哦

好的,一起加油!
作者: xuyue    时间: 2015-8-14 19:28
我仔细看下啊
作者: chensc    时间: 2015-8-15 06:13
学习学习!
作者: DUKEMAN    时间: 2015-8-15 08:21
花漾 发表于 2015-8-7 21:41
typedef和宏它们针对的软件都不一样.
宏是预处理器的任务, 比如说:#define A 10, 预处理器在读取这行后, 它 ...

在新手报道那儿见过层主头像




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