do..while(false)的用法总结
do..while(0)
- 代替{}代码块,实现局部作用域。在某些宏定义时非常有用:
#define f(x) do {\
some_code;
some_code;
} while()(while(0)后没有分号)。这种语句在使用的时候比:#define f(x) {\
some_code;
some_code;
}(没有分号)不容易产生谬误。if(sss)
f(x);
esle
...此处如果不使用while(0)有可能else会跟着f(x)展开后的if走,使用while就不会产生这种情况。需要注意的是:第一种while(0)后不要加;否则在使用的时候就用成了f(x)【没有分号】,代码风格不统一。
- 使用break跳出,带到使用goto的效果,避免使用goto【有的公司禁止使用goto】.
//goto case { if(!a) gotodone; //do something here if(!b) gotodone; //do another thing here done: //final step goes here } // do ... while(0) { do { if(!a) break; //do something here if(!b) break; //do another thing here }while(); //final step goes here }
- 兼容编译器
int a;
a = ;
int b;
b = ;这种代码在只支持c89的编译器上是编译不过去的,比如ADS 2.0int a;
a = ;
do{
int b;
b = ;
}while();这种代码在各种编译器上都能编译过去。
- 另外,do while(0)可以保证代码在某个地方出错及时退出,而不执行后面的代码,有goto的作用,用在一些初始化或者出错不能在继续进行的代码段中。
do..while(false)的用法总结的更多相关文章
- return、 return false的用法
1. return返回null,起到中断方法执行的效果,只要不return false事件处理函数将会继续执行,表单将提交2. return false,事件处理函数会取消事件,不再继续向下执行.比如 ...
- do{}while(false)的用法
do{}while(false): 在工作中我们能经常发现有人写 do{}while(false) 这样的代码,初看时让人迷惑不解,按照上面的语法 do{}while(false) 这样 do{} ...
- do while(false)实用技巧
今天看项目源码的时候发现有些地方用了do{} while(false)的用法,查了下发现这样确实有些优点,mark下. 1.最重要的优点,用在略微复杂的宏定义中. #define AB1 a; b; ...
- cocos2d-x中false,setSwallowTouches,stopPropagation的区别
研究到cocos2d-x触摸这一块了,3.0和2.0相比已经有了很大的不同,使用更加方便和容易理解了. 直接进入正题,解释下,标题中3个用法的区别 通常来说,应用程序中更多使用的是单点触摸,为了简化单 ...
- JS事件及其兼容用法
JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间. 1.事件流:描述的是从页面中接收事件的顺序. IE提出的事件冒泡流:事件开始由最具体的 ...
- PAT——1064. 朋友数(set用法)
如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”.例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号.给定一些整数,要求 ...
- Java基础之instanceof和transient关键字用法
instanceof 用于检测指定对象是否是某个类(本类.父类.子类.接口)的实例.Java中的instanceof也称为类型比较运算符,因为它将类型与实例进行比较. 返回true或false. 如果 ...
- auth模块用法
Auth模块: 如果你想用auth模块 那么你就用全套 createsuperuser 创建超级用户 这个超级用户就可以拥有登陆django admin后台管理的权限 Auth模块是Django ...
- C#中精确计时的一点收获 【转】
C#中精确计时的一点收获 [转] 以下所有代码运行环境:Windows 2003, Intel(R) Core(TM) 2 Duo CPU E8400 @ 3.00GHz 2.99GHz,2.96G ...
随机推荐
- css雪碧图制作
使用css背景合并工具cssSprite 工具下载链接: http://download.csdn.net/download/wx247919365/8741243 1.选择文件 2.生成雪碧图 3. ...
- sshd服务及系统文件传输
一.sshd 简介 sshd= secure shell 可以通过网络在主机中开机shell的服务 客户端软件 sshd 连接方式: ssh username@ip ##文本模式的链 ...
- tp 查询
- Photoshop入门教程(四):混合模式
学习心得:混合模式在Photoshop常容易被忽视,最大原因就是它所处的位置比较隐蔽,在图层面板左上部的角落里.使用混合模式,决定图像中上图层像素如何与图像中的下层像素进行混合,使图层的叠加更加炫酷. ...
- 浏览器存储localStorage、sessionStorage、cookie
localStorage和sessionStorage浏览器支持IE8+(测试IE8不行): localStorage:用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除 session ...
- webpack01
- css预处理器 sass和stylus对比以及常用功能
在众多的css预处理器语言中,sass和stylus算是十分优秀的两个.本文主要针对两者的常用功能做个简单的对比分析.在对比中了解二者的差异,同时帮助大家更好的掌握这两种预处理语言. 本文涉及到的sa ...
- centos7基本环境搭建
1. 准备权限:让普通用户具备sudo执行权限 切换到root用户,su # vi /etc/sudoers 添加 koushengrui ALL=(ALL) ALL 这里很容易忘 ...
- oracle命令查看表结构及表索引
--查看oracle数据库的单个表结构 select dbms_metadata.get_ddl('TABLE','TABLE_NAME') from dual; 括号里面有两个参数,第一个参数是我们 ...
- 【3dsMax安装失败,如何卸载、安装3dMax 2018?】
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...