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 ...
随机推荐
- tomcat+nginx+memcache
tomcat安装 tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/ cd /usr/local/ ln -s jdk1.7.0_79/ java ]# ...
- 在vue2.x中安装sass并配置
在vue中安装sass先检查系统中有没有安装sass,在命令行中输入 sass -v 表示sass在电脑中已有,否者可以参考我这篇博客安装Sass遇到的坑 一.先安装sass cmd打开命令行,到项目 ...
- CheckStyle unable to read from stream
“我在对比了其他正确的ChechStyle文件之后,发现这个无法导入的文件的编码和正确文件的编码不一样,我的xml文档编码为ANSI,而导入正确的ChechStyle文件为UTF-8编码,在我将自己的 ...
- JS你可能还不知道的一些知识点(一)
js程序是用Unicode字符集编写的, 2.转义字符:反斜线 1 2 3 4 function Test(){ var s='you\'re right,it can\'t be a quote ...
- AVplayer搭建ftp共享PC端
1.安装FTP服务 2.关闭防火墙 3.添加FTP站点 设置ip时,需要查询本机的ip 本机测试 4.iphone安装AVPlayer,并设置
- Thread 1 cannot allocate new log, sequence 187398
报错信息: Thread 1 cannot allocate new log, sequence 187398Checkpoint not complete 处理方法: 查看REDO日志组 selec ...
- Not so Mobile UVA - 839
题目链接:https://vjudge.net/problem/UVA-839 题目大意:输入一个树状天平,根据力矩相等原则,判断是否平衡. 如上图所示,所谓力矩相等,就是Wl*Dl=Wr*Dr. ...
- shell脚本之文件测试操作符及整数比较符
一.文件测试操作符: 在书写测试表达式是,可以使用一下的文件测试操作符. 更多的参数可以help test或者man bash 二.字符串测试操作符: 字符串测试操作符的作用:比较两个字符串是否相同. ...
- .NET控制台程序监听程序退出
There are mainly 2 types of Win32 applications, console application and window application. They hav ...
- spring DelegatingFilterProxy管理过滤器
安全过滤器链 Spring Security的web架构是完全基于标准的servlet过滤器的.它没有在内部使用servlet或任何其他基于servlet的框架(比如spring mvc),所以它没有 ...