为什么使用 do while(0),大家见到的奇奇怪怪的代码.

因为现在一般的语言都不建议你使用goto语句,连C语言也不例外,那么你想执行一段代码后,一部分代码不执行,直接跳转到下面去,但是你写if else套嵌,会写很多层,你会觉得看起来好不爽啊,怎么这么多套,阅读起来也吃力,这个时候do while(0)就很方便了。例如下面的代码:

do{
   //  哎呀,我开始工作了,打印显示AFNetworking我全会

    // 哎呀,我出现错误了,下面的执行不了,我break
     break;    // 正常工作.......
}while(0);
    perror("error:");  //出了什么问题我看看.不管了,我先把下面的工作完成。

这样写起来代码会好看一些,但是如果是if else嵌套,可能if里面包含的内容就太多了,阅读起来很麻烦

原文地址:https://www.cnblogs.com/RoysPhoneBlog/p/9227242.html

时间: 2024-10-09 15:41:53

为什么使用 do while(0),大家见到的奇奇怪怪的代码.的相关文章

Hibernate3.3.2+Spring2.5.5+Struts2.1.6+Extjs3.0.0 Annotations注解框架整合及其代码分享

原创整理不易,转载请注明出处:Hibernate3.3.2+Spring2.5.5+Struts2.1.6+Extjs3.0.0 Annotations注解框架整合及其代码分享 代码下载地址:http://www.zuidaima.com/share/1780237805931520.htm 一.准备 1. Hibernate: hibernate-distribution-3.3.2.GA, hibernate-annotations-3.4.0.GA 2. Spring: spring-fr

解决iOS8.0以上系统下无法通过代码创建被删除过的同名相册 ( iOS 8 Photos framework: Create a albums with iOS8 )

问题描述: 在苹果的 iOS8.0以上, 当你创建完一个相册, 例如名为"Rd", 然后在相册中手动删除了这个"Rd"相册, 再次通过代码 #import <AssetsLibrary/ALAssetsLibrary.h> ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init]; [assetsLibrary addAssetsGroupAlbumWithName:@"Rd

Sonar6.0应用之三:集成Eclipse实时代码质量分析(附Eclipse初始化)

Sonar通过插件的形式与Eclipse集成,可以实现实时代码质量分析,前提条件是sonar服务器已经正常工作. 一.启动eclipse,下载并安装sonar插件 安装完成插件后重启eclipse,再次打开后对需要代码质量检查的项目右击 配置sonar服务器的地址.登陆名.密码等. 可以搜索到已经在sonar服务器上构建好的项目名称加入 二.配置eclipse中的命令窗口,便于实时代码质量检查. 找到SonarLint,复选它的三个组件 可以开始对源代码的质量进行分析了 错误说明 -------

OpenCV3.0 HDR(高动态范围)示例代码以及用法

OpenCV 3.0以及以后版本集成了HDR算法,样例代码的路径为: .\sources\samples\cpp\tutorial_code\photo\hdr_imaging.cpp. 实现算法的参考文献为<Recovering high-dynamic range radiance maps from photographs>,作者主页:http://www.pauldebevec.com/Research/HDR/. 作者主页上有实验的测试图片序列,可以下载下来,配合样例代码使用.Ope

.NET技术-1.0.使用反射、特性简化代码(验证Model类)

使用反射.特性简化代码 参考项目:利用反射验证Model类/AssemblyVerification 假设现在有一个学生类(Student) /// <summary> /// 学生类 /// </summary> public class Student { /// <summary> /// 名字 /// </summary> private string name; public string Name { get { return name; } s

外部中断0/1实现点亮LED代码

1 #include <reg52.h> 2 #include <stdio.h> 3 sbit LED = P2^0; 4 //初始化函数 5 void init(){ 6 //打开外部中断1的分开关 7 EX1=1; 8 //打开外部中断总开关 9 EA=1; 10 //外部中断1的标志位,标志着外部中断在响应中断 11 IT1=1; 12 } 13 //主函数 14 void main(void){ 15 //调用初始化函数 16 init(); 17 /*兜底循环,因为主函

USB2.0开发之bulkloop固件工程代码注释

bulkloop固件工程介绍 固件程序是指运行在芯片内置内核中的程序.固件程序的主要功能有功能设备的各硬件单元初始化.重新配置功能设备.中断处理.定义寄存器以及通信控制等等. Cypress公司提供的固件框架已经完成和实现了对于设备的重列举.初始化和电源管理等功能.用户可以在提供的固件构架基础上添加或修改相应的程序代码,这样大大缩短了设计周期,提高了设计效率. 本文附上bulkloop例程核心代码及注释帮助大家对固件代码进行快速理解. 上图是Cpress公司提供的bulkloop例程的工程文件图

PHP168 6.0及以下版本login.php代码执行

在其域名后加上这样一段代码: login.php?makehtml=1&chdb[htmlname]=xx.php& chdb[path]=cache&content=<?php%[email protected]($_POST[cmd]);?>. 这段代码 的意思利用login.php文件将 <?php%[email protected]($_POST[cmd]);?> 这段代码写入到网站缓存目录 cache的xx.php文件中.“<?php%[em

Metinfo3.0 /include/common.inc.php PHP代码注入

原文地址:https://www.cnblogs.com/Rain99-/p/11697805.html