- 浏览: 37132 次
最新评论
从一些经典代码中常常看到宏中使用do...while(0)的用法,感觉上do...while(0)只是在有可能要中途跳出后续一段代码的时候替换goto的一种用法,其他的就不求甚解了。
今天总算看到了wiki上对do...while(0)的解释,算是解了心中的一个疑惑。
一种情况是,这种用法可以避免在if/for下使用宏时,由于宏中的多个语句遗漏大括号而造成流程错误。就像下面这一段代码,可算是个明显的错误了。
要是使用do...while(0)将DO_SOMETHING()宏改成这样,就可以避免上述的错误了。
这可就有一个疑问了,何必加上do...while(0)呢,直接使用大括号不就好了么?
不错,只要在宏中使用大括号就可以把多条语句合成一条语句了。不过,大括号并不是个天山雪莲般可治百病的灵药哟。
看看直接使用大括号的程序吧。
看出问题了么?由于if语句下的宏后多的那个小小的分号,if下的一个语句就变成了两个语句,随后的else可就会提示你语法错误喽
而使用之前do...while(0)的宏就不会有这个问题,这也就是do...while(0)的第二个用处了。
当然,以上说的这些都是一种无奈的保护机制。如果保持一个良好的编程习惯,比如在if和else后面紧跟大括号,就不需要在乎宏上的do...while(0)了。
只是,可惜的是,当我把do...while(0)使用到公司的代码中时,却发现这触犯了Lint工具的检测规范,而直接给了我违规的结论。无奈之下,只得把do...while(0)全部删除。
或许,Lint工具并不是告诉我这样做违反编程规范,只是想提醒我要养成良好的遵守编程习惯吧
今天总算看到了wiki上对do...while(0)的解释,算是解了心中的一个疑惑。
一种情况是,这种用法可以避免在if/for下使用宏时,由于宏中的多个语句遗漏大括号而造成流程错误。就像下面这一段代码,可算是个明显的错误了。
#define DO_SOMETHING() DO_A();\
DO_B(); \
DO_C()
//
if (CONDITION_A)
DO_SOMETHING();
要是使用do...while(0)将DO_SOMETHING()宏改成这样,就可以避免上述的错误了。
#define DO_SOMETHING() do{ \
DO_A(); \
DO_B(); \
DO_C(); \
}while(0)
DO_A(); \
DO_B(); \
DO_C(); \
}while(0)
这可就有一个疑问了,何必加上do...while(0)呢,直接使用大括号不就好了么?
不错,只要在宏中使用大括号就可以把多条语句合成一条语句了。不过,大括号并不是个天山雪莲般可治百病的灵药哟。
看看直接使用大括号的程序吧。
#define DO_SOMETHING() {\
DO_A(); \
DO_B(); \
DO_C(); \
}
//
if (CONDITION_A())
DO_SOMETHING();
else
DO_SOMETHING_ELSE();
DO_A(); \
DO_B(); \
DO_C(); \
}
//
if (CONDITION_A())
DO_SOMETHING();
else
DO_SOMETHING_ELSE();
看出问题了么?由于if语句下的宏后多的那个小小的分号,if下的一个语句就变成了两个语句,随后的else可就会提示你语法错误喽
而使用之前do...while(0)的宏就不会有这个问题,这也就是do...while(0)的第二个用处了。
当然,以上说的这些都是一种无奈的保护机制。如果保持一个良好的编程习惯,比如在if和else后面紧跟大括号,就不需要在乎宏上的do...while(0)了。
只是,可惜的是,当我把do...while(0)使用到公司的代码中时,却发现这触犯了Lint工具的检测规范,而直接给了我违规的结论。无奈之下,只得把do...while(0)全部删除。
或许,Lint工具并不是告诉我这样做违反编程规范,只是想提醒我要养成良好的遵守编程习惯吧
发表评论
-
入职第一天
2004-07-12 20:20 552很喧闹的一天新人训。当然,可以说是激情四射,或者说是嘈杂无聊。 ... -
迎接部门训
2004-07-13 18:07 509今天开始迎接部门的专业训了,C#、SQL Server、数据库 ... -
生活的颜色
2004-07-14 18:57 575一个诚实的裁判就这样慷慨赴义了,很多很多黑暗中的裁判们却还好端 ... -
历史的沉思
2004-07-16 12:43 639很久以前的一篇文章, ... -
选择的未来
2004-07-17 15:11 490先提一个问题:做一个技术员,技术能力重要还是业务知识重要?再提 ... -
统一的困惑
2004-07-19 20:45 531RUP(Rational统一过程)的基本开发方式是迭代。需求迭 ... -
开发的效率
2004-07-21 17:44 528面对多人协同开发的分层系统,有两种开发方式:其一、一人负责一到 ... -
模型或模式
2004-07-22 23:27 644不论是吵吵嚷嚷的软件工程、XP建模,还是死灰复燃的MDA、一心 ... -
对象的效率
2004-07-28 21:22 536面向对象带来方便的同时亦带来很多的问题。类的继承在扩展的同时也 ... -
泪写的文章
2004-07-29 20:20 512今天我又哭了。一个月前,我还觉得哭于我是很遥远的事情。甚至,我 ... -
期待的精彩
2004-07-31 11:08 533好久好久没有看到国足这么酣畅的胜利了,好久好久没有体会到看球的 ... -
转载的文章
2004-08-01 10:50 501今天转载一篇吧,记录一段可笑的过往。 别了,Dr.Dobb's ... -
TDD 心得
2004-08-03 16:19 787一直觉得,近年来,真正有意义的技术或者思想只有两个:Refac ... -
近期的任务
2004-08-06 12:54 5771、Test Driven Development2、Java ... -
上海印象一
2004-08-09 22:28 566车一进入上海,扑面而来的就是一片一片的高楼,黑压压地便压了过来 ... -
上海印象二
2004-08-10 21:19 521上海当然是天堂,但也是仅对一部分人一部分地区。对大多数人大部分 ... -
转载的文章
2004-08-13 23:38 452O/R Mapping中的继承~ http://www.cnb ... -
生日的祝福
2004-08-15 10:49 709今天是agate的生日。尽管这句话已经被用得很俗,不过我还是想 ... -
等爱的狐狸
2004-08-27 18:16 566“对我来说,你还只是一个小男孩,就像其他千万个小男孩一样。我不 ... -
飞翔的寓言
2004-08-30 20:58 513我才发现梦想与现实间的差别逆着风让自己体验每一个感觉就像是寓言 ...
相关推荐
其中一个重要方面是防止用户使用不合理或违规的名称进行注册。这不仅涉及到用户体验的问题,更是关乎网络安全、内容审查以及法律合规性等多方面的考量。本文将深入探讨这一主题,包括其重要性、实现方法以及可能遇到...
2. **违规后果**:违反平台规则,如发布不合理或违规悬赏,可能导致账号受限或被封禁,影响悬赏主的信誉和收益。 3. **悬赏发布**:发布悬赏需依据平台的“发布悬赏须知标准”和“最低赏金标准”,不能盲目跟风,...
若无法通过医院反馈判断,合管办会进行现场稽查,通过多方面证据确认是否存在不合理或违规行为。此外,警示级别的设置为问题严重度提供了参考,但并不直接决定业务操作,而是帮助指导后续处理。 系统还特别关注特定...
- 安全文明生产和工艺合理性:包括遵守安全操作规程、刀具和工件的摆放、设备保养、工艺流程设计等,不合理或违规操作会扣分。 3. **程序编制**: - 程序完整性:要求指令正确,程序完整,数值计算准确,体现编程...
总结起来,App运营者应严格遵循《网络安全法》、《消费者权益保护法》等法律法规,参照国家标准,确保透明、合理地收集和使用个人信息,同时建立完善的安全防护机制和用户权益保障体系,以防止违法违规行为的发生。...
- **作用**:限制了系统存储违规记录的能力,有助于合理规划内存资源。 #### 2. 初始积分 `MAX_SCORE_VALUE` - **定义**:`#define MAX_SCORE_VALUE 20` 定义了每个车辆或驾驶员的初始积分值为20分。 - **作用**:...
18. **评价规范**:买卖双方的评价应真实客观,禁止利用评价进行敲诈或其他不当行为。 19. **规则变更通知**:淘宝会通过规则频道公告、帮助中心公告等方式通知用户规则变更。 20. **退款申请时间**:买家付款后,...
6. **咚咚违规处罚**:违规使用咚咚可能会导致扣2分、4分或5分的处罚。 7. **咚咚考核指标**:京东开放平台风向标考核的咚咚使用指标包括咚咚30秒应答率和咚咚平均响应时长。 最后,咚咚满意度的计算案例表明,...
然而,在改造过程中,如果施工不当或设计不合理,往往会带来一系列建筑安全问题。本研究通过有限元模拟方法,探讨了违规改造和砂浆强度降低对砌体结构房屋动力性能的影响。 首先,论文中提到的违规改造主要包括擅自...
同时,随着技术的进步,未来可能会实现更精确的个体识别,以便对违规者进行警告或采取相应措施。 总结来说,"违规抽烟-视觉识别算法样本数据集"是一项旨在利用深度学习和计算机视觉技术解决社会问题的尝试。通过对...
政策内容应表述清晰,逻辑结构合理,避免出现复杂的法律术语和行话,使普通用户能够理解其内容,充分认识到自己的信息权利和保护措施。 《指南》进一步指出,隐私政策应详细描述App的各项业务功能及其所需收集的...
《APP违法违规收集使用个人信息自评估指南》是一份旨在帮助开发者和运营者确保其应用程序符合法律法规,尊重并保护用户隐私的重要文档。以下是对这份指南主要内容的详细解析: 1. **目的和合法性**:APP应明确收集...
最后,隐私政策不应包含不合理条款,如免除自身责任、加重用户责任或排除用户主要权利。这些行为都是对用户权益的侵犯,与法规要求相悖。 总的来说,这份指南为App运营者提供了全面的框架,以确保他们在收集和使用...
本压缩包文件"【数学建模】【美赛】优秀论文+违规论文示例.rar"中包含了两部分重要的学习资源:优秀论文和违规论文示例,这对于参赛者或对数学建模感兴趣的读者来说,是非常宝贵的学习材料。 优秀论文部分: 1. **...
因此,对于B类违规,公司通常会采取更加严格的措施,首次违规就可能导致停职或解雇,以迅速制止不当行为,保护公司利益不受侵害。 具体违规行为的举例,为员工提供了更为明确的界限。例如,A类违规行为还可能包括...
根据规定,装修施工违规操作被划分为四个等级,每一种违规行为都对应着不同的罚款标准和处理方式,明确的梯度处罚有助于对不同程度的违规行为作出公正合理的处理。 一级违规行为是最为常见的不当施工行为,例如不...
这些措施的适用性充分考虑了违规行为的性质和责任,体现了处理的公正性和合理性。特别是对于在职、退休甚至调离员工的违规行为,都有相应的处理规定,显示了黑龙江省农村信用社对内部管理的严格要求和长期性的考虑。...
1. **违规过失定义**:违规过失通常指的是员工违反公司内部制定的规章制度、工作流程或者职业道德,这些行为可能对公司的正常运营、团队和谐或客户关系造成负面影响。 2. **过失人信息**:在处分单中,需要详细列出...
在这一基础上,条例强调处罚与教育相结合的原则,即在对违规行为进行处罚的同时,也注重对员工的教育和引导,促使员工深刻认识到违规行为的严重性和对公司的不良影响,从而达到预防和减少违纪违规行为的目的。...