typedef与#define用法与区别探讨

[复制链接]
1149|14
手机看帖
扫描二维码
随时随地手机跟帖
shenmu2012|  楼主 | 2019-2-17 21:41 | 显示全部楼层 |阅读模式
这个在程序设计中时经常见到的,我们又有多少理解这两者的用法区别的呢?这里我跟大家一块的看下的
shenmu2012|  楼主 | 2019-2-17 21:42 | 显示全部楼层
首先,,在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,,如:typedef    int       ARRAY[10];

使用特权

评论回复
shenmu2012|  楼主 | 2019-2-17 21:42 | 显示全部楼层
#define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编
译过程中进行,而是在这之前(预处理过程)就已经完成,如:#define   Loop_10    for (int i=0; i<10; i++)

使用特权

评论回复
shenmu2012|  楼主 | 2019-2-17 21:44 | 显示全部楼层
由上述连定义的可以看出——1. typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点; 2. #define 难以发现潜在的错误及其它代码维护问题

使用特权

评论回复
shenmu2012|  楼主 | 2019-2-17 21:45 | 显示全部楼层
再强调一下的——typedef只是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),而#define原本在C中是为了定义常量,到了C++,const、enum、inline的出现使它也渐渐成为了起别名的工具。

使用特权

评论回复
shenmu2012|  楼主 | 2019-2-17 21:46 | 显示全部楼层
还是有点蒙的——一般都遵循#define定义“可读”的常量以及一些宏语句的任务,而typedef则常用来定义关键字、冗长的类型的别名。对照上面的再补充下的

使用特权

评论回复
firstblood| | 2019-2-17 22:02 | 显示全部楼层
看到楼主的这个探讨的肯有意思的哈,我先跟着学习下的,一般的我都看其他人怎么设计的我就怎么设计的还真没仔细的看看的

使用特权

评论回复
firstblood| | 2019-2-17 22:03 | 显示全部楼层
宏定义只是简单的字符串代换(原地扩展),而typedef则不是原地扩展,它的新名字具有一定的封装性,以致于新命名的标识符具有更易定义变量的功能。——这个我还能理解一点的

使用特权

评论回复
comeon201208| | 2019-2-17 23:37 | 显示全部楼层
shenmu2012 发表于 2019-2-17 21:45
再强调一下的——typedef只是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),而#define原本在C中 ...

这个也就是说起别名的用typedef的呗

使用特权

评论回复
lvben5d| | 2019-2-18 09:42 | 显示全部楼层
  楼主为了刷分,也不需要这样断开篇幅吧,别人看起来断断续续。。

使用特权

评论回复
smilingangel| | 2019-2-24 21:51 | 显示全部楼层
这个还是可以分清楚的哈

使用特权

评论回复
smilingangel| | 2019-2-24 21:52 | 显示全部楼层
两者其实说白了都是起别名的,只不过在使用的时候应用场合不同而已

使用特权

评论回复
smilingangel| | 2019-2-24 21:53 | 显示全部楼层
shenmu2012 发表于 2019-2-17 21:42
首先,,在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不 ...

这个例程的我还没看明白的额,有谁能给讲解下的?这个跟定义的变量的有啥区别的?

使用特权

评论回复
smilingangel| | 2019-2-24 21:54 | 显示全部楼层
shenmu2012 发表于 2019-2-17 21:42
首先,,在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不 ...

这看似是定义一个数组变量的,,但是没有分配内存的,,有怎么理解的?

使用特权

评论回复
baimiaocun2015| | 2019-2-24 23:27 | 显示全部楼层
shenmu2012 发表于 2019-2-17 21:42
#define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一 ...

这种宏的定义的用法还是比较好的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

4324

帖子

9

粉丝