万恶的typedef!!

whoseking 2007-03-19 09:39:57
刚学C的时候,觉得typedef这东西真不错!声明一个struct可以不带struct写程序,多方便!现在用VC写程序,发现里面typedef的类型漫天飞!一跟踪发现原来是char*等等!发现微软的程序员非常喜欢typedef,一个结构可以typedef出N个类型,实在是让人无法忍受!
...全文
683 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hemee 2007-03-20
  • 打赏
  • 举报
回复
楼上几位解释得很好
kane12 2007-03-20
  • 打赏
  • 举报
回复
学习,提高
Jim_King_2000 2007-03-20
  • 打赏
  • 举报
回复
typedef是为了增加可移植性的.很多的库都使用自定义的数据类型,不使用ansi数据类型.这样即使库做了修改,用户的源代码也不用修改,只需要重新编译即可.
北极猩猩 2007-03-20
  • 打赏
  • 举报
回复
Windows下绝大多数的typedef都是为了跨平台考虑的。就像是taodm说的,之所以typedef就是说明你不该知道它的真正类型。

比如,一个handle在Win16下是16位的,Win32下是32位的,Win64下可能又是64位的。如果使用基本类型的话,那么所有的程序在不同平台下都要去该这些数据类型。难道不把人累死

还有,即使基本类型相同,数据可能代表的东西是完全不同的。如果你只看到long,你会知道他是一个Window handle,DC handle还是Event?这些数据在未来的平台上可能拥有不同的基本类型,到时候你的程序不是只有崩溃?
sinall 2007-03-20
  • 打赏
  • 举报
回复
呵呵,typedef太必要了,理由如下:
1)typedef在跨平台的程序总是重要的,楼上有人说REAL,这个REAL可以是float,也可以是double,从而增加灵活性。
2)typedef在和模板技术结合的时候(比如STL),可以简化程序,并且在如容器发生改变的情况下(比如vector改为deque的时候),仅需改变较少代码即可。
taodm 2007-03-20
  • 打赏
  • 举报
回复
应该换了思路,“想知道它的基本类型”其实是个错误。
晨星 2007-03-20
  • 打赏
  • 举报
回复
还要,基于以上几位所解释的,一个直接的结论,也是应该注意的,就是别写出那些对实际类型有太多依赖的代码。
比如,千万不要在某系统上跟踪到HANDLE原来是unsigned short,于是就干粹在代码中需要HANDLE的地方直接写unsigned short。
晨星 2007-03-20
  • 打赏
  • 举报
回复
北极星,打错了。- -b
晨星 2007-03-20
  • 打赏
  • 举报
回复
嗯。除了taodm和北京星解释的。
typedef在模板技术中也很重要。
我是潘东东 2007-03-20
  • 打赏
  • 举报
回复
不说了 跟上面几位想法一样
feelyousky 2007-03-20
  • 打赏
  • 举报
回复
去移植两个程序就知道他的好处了
calebgch 2007-03-20
  • 打赏
  • 举报
回复
万恶淫为首。
xlbdan 2007-03-20
  • 打赏
  • 举报
回复
typedef可以使有些复杂的复合类型看起来更简洁易懂.
举个例子,一个有N个元素的数组,其每个元素都是指向返回值为int,参数为int的函数的指针,
不用typedef的话,写出来是: int (*p[N])(int);
若用typedef的话,写出来是: typedef int (*PP)(int);
PP p[N];
ff5dq4 2007-03-19
  • 打赏
  • 举报
回复
同感哈 有什么办法直接就能知道其基本类型么?
kimryo 2007-03-19
  • 打赏
  • 举报
回复
自己写一些c++系统
kimryo 2007-03-19
  • 打赏
  • 举报
回复
等你开始自机械系统的时候,你就知道为什么他们会这么做了~
blackmurder 2007-03-19
  • 打赏
  • 举报
回复
既然用了typedef那么就肯定有它的道理,也许楼主随着进一步深入学习VC,会体会到它的道理
Cnwanglin 2007-03-19
  • 打赏
  • 举报
回复
别人写的习惯了,

不习惯自己可以再写个系统

你写成你名字都没人说,只是以后维护起来就郁闷了,哈哈
whoseking 2007-03-19
  • 打赏
  • 举报
回复
别名太多实在不爽,还是喜欢用真名!看看GDI+里面多了一个REAL型,跟踪一看原来是float型,我就日了,至于吗!
cphua 2007-03-19
  • 打赏
  • 举报
回复
typedef 主要还是用来其别名的,容易记,习惯就好了~

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧