do while(false)实用技巧

今天看项目源码的时候发现有些地方用了do{} while(false)的用法,查了下发现这样确实有些优点,mark下。

1.最重要的优点,用在略微复杂的宏定义中。

#define AB1    a; b;     // x, 下面语句b不能被执行: if (cond) AB1;
#define AB2    { a; b; } // x, 下面语句编译出错:if (cond) AB2; else ...;
#define AB3    a, b      // x, 有运算符优先级问题
#define AB4    do { a; b; } while (0)  

2.当你执行一段代码到一半,想跳过剩下的一半的时候,如果你正处于do while循环中,则能用break达到这个目的。如下伪代码:

int foo()
{
    somestruct *ptr = malloc(...);

    dosomething...;
    if(error)
        goto END;
    dosomething...;
    if(error)
        goto END;
    dosomething...;
END:
    free(ptr);
    return 0;
}

避免goto语句的话,实用do while(false)就能很好的解决。

int foo()
{
    somestruct *ptr = malloc(...);
    do
    {
        dosomething...;
        if(error)
            break;
        dosomething...;
        if(error)
            break;
        dosomething...;
    }
    while(0);

    free(ptr);
    return 0;
}
时间: 2024-08-03 13:46:43

do while(false)实用技巧的相关文章

使用FlashPaper在线转换.doc为.swf_实用技巧

https://yq.aliyun.com/ziliao/160044?spm=5176.8246799.0.0.JBbqjY 摘要: 本文讲的是使用FlashPaper在线转换.doc为.swf_实用技巧, FlashPaper 是Macromedia推出的一款电子文档类工具!通过使用FlashPaper,可以将需要的文档通过简单的设置转换为SWF格式的Flash动画,原文档的排版样式和字体显示不会收到影响,这样做的好处是不论对方的平台和语言 云计算 云服务器ECS 大数据 建站 备案 文档

android实用技巧 - 用代码来实现selector

众所周知,android可以通过XML文件来创建selector,以Drawable对象的形式安装到组件上,以提供统一的风格设置.但是在某些时候,我们需要通过代码的形式来实现相同的功能,例如组件数量非常多,对应不同的图片,这时候如果还用XML的话就需要创建大量的selector文件,非常繁琐. 例如一个TextView使用了如下的selector <TextView         android:id="@+id/TextView_title"         android:

位运算简介及实用技巧(一):基础篇[转]

位运算简介及实用技巧(一):基础篇 原贴链接:http://www.matrix67.com/blog/archives/264 去年年底写的关于位运算的日志是这个Blog里少数大受欢迎的文章之一,很多人都希望我能不断完善那篇文章.后来我看到了不少其它的资料,学习到了更多关于位运算的知识,有了重新整理位运算技巧的想法.从今天起我就开始写这一系列位运算讲解文章,与其说是原来那篇文章的follow-up,不如说是一个remake.当然首先我还是从最基础的东西说起. 什么是位运算?    程序中的所有

Buildroot构建指南--快速上手与实用技巧【转】

本文转载自:http://blog.csdn.net/zhou_chenz/article/details/52335634 Buildroot官方全英文使用手册的链接是https://buildroot.org/downloads/manual/manual.html,需要知道每一个细节的朋友,可以仔细查阅,这篇文章只是我自己从中提炼出来的一下快速上手的技巧. 如何在现有项目加入自己的APP Buildroot从零开始构建的过程还是很复杂的,以后的文章会一步步介绍.我们先来看看如何在现有项目中

CSS3笔记和CSS实用技巧

CSS/CSS3在线手册:http://www.css119.com/book/css/   50个CSS代码片段必备:http://blog.csdn.net/holandstone/article/details/17613089   CSS规范和常用模块代码段:http://nec.netease.com/   必须熟记的30类CSS选择器:http://bbs.html5cn.org/thread-85312-1-1.html   CSS制作水平垂直居中对齐所有办法:http://www

js基础进阶--编的实用技巧(一)

我的个人博客:http://www.xiaolongwu.cn 在平时的开发中,编码技巧很重要,会让你少写很多代码,起到事倍功半的效果. 下面总结几种简单的技巧,大家共同学习一下 1. 利用+.-./1,*1将字符串转换为整数型 这个方法试用于将字符串类型的数字转换为整数型,如果带字母就会返回NaN. var a = "1234", b = "leonWuv"; //我们想把a转换为1234的整数型,一般方法 console.log(typeof Number(a)

APICloud开发者进阶之路 | 超级实用技巧

金秋9月,脑海还是北京的"中非合作蓝"!今天按照惯例,柚子君还是要督促大家充充电的! 本周<30天,App开发从0到1>将要给大家分享第十章超级实用技巧,我们精选了其中的一个章节--地图模块的实用扩展:在地图上添加自定义按钮,一起来学习吧. 主要内容本章将向读者介绍一些开发中常用的功能和技巧 , 这些技巧涉及应用开发的方方面面. 示例 1 讲解了屏幕动态适配的方法,是开发 App 必须具备要掌握的技能之一:示例 2.示例 7.示例 9 -示例 11 具体讲解了一些常见的业务

总结vue知识体系之实用技巧

vue 作为目前前端三大框架之一,对于前端开发者可以说是必备技能.那么怎么系统地学习和掌握 vue 呢?为此,我做了简单的知识体系体系总结,不足之处请各位大佬多多包涵和指正,如果喜欢的可以点个小赞!本文主要讲述一些vue开发中的实用技巧. 相关推荐 总结vue 知识体系之基础入门篇 总结几个vue-router的使用技巧 搭建一个vue-cli的移动端H5开发模板 监听组件的生命周期 比如有父组件 Parent 和子组件 Child,如果父组件监听到子组件挂载 mounted 就做一些逻辑处理,

Mac预览怎么用 Mac预览功能实用技巧大全

Mac预览怎么用?有很多的用户以为Mac自带的预览功能只具有简单的图片浏览功能,其实不然,其实"预览"是一款强大的看图.修图.改图软件,也同时是一款多功能的 PDF 阅读与编辑工具,接下来Pc6苹果小编给大家详细介绍一下Mac预览功能实用技巧. 目前的 Mac 预览程式可以支持 TIFF. PNG. JPEG. GIF. BMP. PDF 等主要文件格式的浏览与编辑,而单纯预览上也可以支持像是 Photoshop 等专业图像处理软件. Office 等专业文书处理软件所产生的特殊文件格