免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: net_robber
打印 上一主题 下一主题

最近总犯低级错误 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2006-12-22 10:20 |显示全部楼层
原帖由 whyglinux 于 2006-12-22 09:37 发表
>> 这样的情况是用一个宏.而不是去 sizeof

>> 对,应该用宏

至少对楼主的程序而言,用 sizeof 比定义宏要更好一些。

能不用宏的情况下就不要使用宏,这是人们的经验总结,也应该作为一条应该 ...




说这话的完全是一个激进的程序设计者,其实对于宏的讨论已经不是一时半会的事情了,根本也不会有是否要禁止的必要,就像goto语句的存在和消灭,至今也不会有什么结果。
宏的作用不只是定义常量那么简单,另外在定义常量方面其独有的优势也是不可比拟的
#define  SECONDS_IN_ONE_YEARS   (365*24*60*60)UL,请问即不用宏,又不能占用CPU运行时,那么你打算怎么存储?---难道是调出计算器,计算出365*24*60*60的结果res,然后const unsigned long SeconsInOneYears = res?????
还有其他更多的实例说明,排斥语言特性或叫诋毁其实是一个程序员在追起编程理念时的不成熟表现,语言永远是辅助的,错也不在语言上,就像现在的骂人脏话,难道是脏话出了问题???其实是说的人自己的问题

论坛徽章:
0
2 [报告]
发表于 2006-12-26 11:28 |显示全部楼层
whyglinux ,很高兴你能提出你的见解,我认为能在一个程序论坛能如此激烈和深刻的讨论一个问题是多么的美好,就像CSDN那种教学站点,我是实在没什么兴趣和他们唠叨,对于你提出的反驳相当的中肯和犀利,你所说的我认为很是正确,当然对于宏,我想我们应该采取容忍的态度,相信我,这不是试图说服你或者其他人要在怎么作,而是通过这种友善的争论——就像XP团队的第二条理念所说的:XP团队的程序员是要通过争论,甚至是面红耳赤的场面来讨论问题的,因为那就像头脑风暴一样有效。
曾经当我在vxWorks下编程时,我不小心看到了他的源代码的实现,我被其中巧妙的宏使用所吸引
知道后来我为PDA编写基于Wince的程序时,在C#环境下进行工作,我使用了大量的const来定义常量,我不得不说这两中方式都很棒,都是保证我的程序能轻易延展的好的方法。
当然,有一天,我为msp430和f020编写代码的时候我发现,硬件工程师告知我,由于其核心代码太大,留给我为GPRS编写驱动程序所需的内存空间仅有1K时,我不得不尽量的试图减少我对内存的扩展使用,那么当我的工作进行到最后发现内存还需要40bits时,我不得不尝试把所有常量的定义改为了enmu,这其实是个很好的主义,但是对于GPRS中需要的大量String信息,我还是不得不用#define来代替……或者这实在说明不了什么,因为我确实在其后的日子里在PC上编译程序时,我仍是很理智和谨慎的使用着C++中的template(我的系统STL大量使用)的同时,更习惯的使用了const定义,还是像原来那么美妙。
那么,#define就像他曾经存在过一样,我用他解决这问题,const却是像现在一样,是我的首选。
或者更多时候,我的程序——也不排斥任何能实现目的的设想

论坛徽章:
0
3 [报告]
发表于 2006-12-26 14:19 |显示全部楼层
原帖由 wolf0403 于 2006-12-26 12:35 发表
就像CSDN那种教学站点,我是实在没什么兴趣和他们唠叨
攻击 CSDN 不能证明你水平有多高。



就像你的名字后缀的括号里描述的那样,你很称职
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP