do while(false)实用技巧
2024-10-17 15:01:34
今天看项目源码的时候发现有些地方用了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 ;
}
避免goto语句的话,实用do while(false)就能很好的解决。
int foo()
{
somestruct *ptr = malloc(...);
do
{
dosomething...;
if(error)
break;
dosomething...;
if(error)
break;
dosomething...;
}
while(); free(ptr);
return ;
}
最新文章
- ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理
- ORACLE中创建和删除临时表
- Cadence Allegro小技巧-从外部文本文件添加文本
- 如何在mysql命令窗口获取到程序正在执行的sql语句
- JavaScript解析机制
- 动态规划(背包问题):POJ 1742 Coins
- c语言结构体2之变量赋值于字符串
- [置顶] 【cocos2d-x入门实战】微信飞机大战之十二:分数的本地存储
- Delphi 技巧改造HINT的输出方式
- Python学习笔记(四)Python函数的参数
- dyld: Symbol not found: _OBJC_CLASS_$_UIBlurEffect
- Linux 用户身份与进程权限
- django by example 第四章 dashboard处html无法渲染问题
- js模拟浏览器加载效果 pace.js 中文官方文档
- 电影编码JPEG2000与H.264
- C#快速读写文件
- Atitit 找人软福利建设 技术团队建设大概流程
- Java基础--深克隆补充
- window.name跨域实现
- lazy-mock ,一个生成后端模拟数据的懒人工具