替代goto语句的一个思路_c goto作用相同的写法_牛不才的博客-程序员秘密

技术标签: 001-基础知识  

当错误发生时,函数需要返回,使用goto语句跳转到结尾,然后执行相应的释放资源的操作,是一种常用的写法,这也是对goto语句运用比较合理的方案。经历过几个项目,大都采用这种方案。

但这有种负面的影响,因为所有的变量定义必须要在goto之前,所以就不得不在函数头部放置所有的变量定义,而实际上变量的实际作用域也许只有相邻的几行,这样可读性就变弱了。

下面的事例,利用do{}while(0);跳转使用break的方法。能很好的解决这个问题。定义变量和使用变量的地方可以尽量在一个代码段中。

这个思路的出处,我已经记不清除了,应该是在某本书上看到的,标记一下,待以后查证补齐。

#include <cstdio>
int main()
{
do{
	int a = 12;
	if (a < 23)
	{
		break;
	}else
	{
		//to do something
	}
}while(0);

	// to do something 
	return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/niu91/article/details/62884190

智能推荐

android动画之Camera_android camera 动画_jishg318974的博客-程序员秘密

Camera就像一个摄像机,一个物体在原地不动,然后我们带着这个摄像机四处移动,在摄像机里面呈现出来的画面,就会有立体感,就可以从各个角度观看这个物体。它有旋转、平移的一系列方法,实际上都是在改变一个Matrix对象,一系列操作完毕之后,我们得到这个Matrix,然后画我们的物体,就可以了。常用的API如下:rotateX(float degree) 绕着x轴旋转degre

程序员之路:C语言数组_c语言数组常量表达式_彭世瑜的博客-程序员秘密

数组的下标均以0开始;【一维数组】1、 数据类型 数组名称[长度n] = {元素1,元素2…元素n};2、 数据类型 数组名称[] = {元素1,元素2…元素n};3、 数据类型 数组名称[长度n]; 数组名称[0] = 元素1; 数组名称[1] = 元素2; 数组名称[n-1] = 元素n;C语言的数组长度一经声明,长度就是固定,无法改变,...

一天坑之--css伪类,hover消除_etabs标签页去除hover样式_json-williams的博客-程序员秘密

精通css里是这么解释伪类的作用的:根据文档结构以外的一些条件,对元素进行样式的应用。大致意思就是我不需要像常用的选择器例如ul li{ background:red }这样去根据文档结构来应用样式。伪类有这么几种条件:link visited(这些都只能应用于锚元素,也就是指定超链接的元素,所以它们也叫链接伪类),hover,active ,onfous(统称动态伪类)。link和visit

ffmpeg将多个MP4合并成一个MP4_小王小王指定辉煌的博客-程序员秘密

将多个MP4合并成一个MP41. 素材.mp4 逐个转化为 素材.tsffmpeg -i input.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input.ts2.将1.ts,2.ts,3.ts 合成mp4。ffmpeg -i "concat:1.ts|2.ts|3.ts" -c copy -bsf:a aac_adtstoa...

CSS:使用CSS媒体查询创建响应式布局_weixin_30619101的博客-程序员秘密

  现如今在Web前端领域,BootStrap是一个最流行的UI库,其12列的栅栏系统为响应式布局提供了一种对程序员来说很好操作的模式。  追究Bootstrap的内在原理,其实就是通过媒体查询来完成对不同屏幕大小、不同分辨率、不同设备导致的不同场景下的Css样式的选择。今天我就对媒体查询这一工具或者说方法来进行一个总结。  从 CSS 版本 2 开始,就可以通过媒体类型在 CSS 中获得...

二本学渣的小厂面试总结:去哪儿、爱奇艺、作业帮(Java岗)_作业帮和去哪儿网_java码农之路1的博客-程序员秘密

“找工作,看不看重学历?”这是我们经常会谈论到的一个话题,而不同的人持有不同的意见,实际上不可否认的是,高学历确实更容易得到好工作,学历是敲门砖,大部分的企业还是很看重学历的,但这并不意味着低学历或普通学历的人群就没有获得一份好工作的机会,因为机会从来不是获得的,而是自己创造的。二本出身的我,计算机专业本科毕业,想要进入一线互联网大厂,我知道机会是很小的,与其他高学历人群相比较,我的核心竞争力确实小了许多,无论是从背景还是技术来看,所以积累经验,提升技术是我需要做的第一步,那么目前来说,小厂或许会更适合

随便推点

基于Transformer的图像重建模型MST++的TensorRT模型推断优化_whaosoft143的博客-程序员秘密

我们主要采用2条主线优化该网络,和两种方式。基于对ONNXParser用Nsight进行Profiling,并最终确定了有针对性的优化方案,包括:针对于上述问题我们简化网络结构通过TensorRT API重新搭建了网络结构,实现了,,,和MST++的核心结构.针对于上述结构我们开发了一些Plugin同时借鉴已有的Plugin在TensorRT API通过合并算子引入,和.整体的优化过程如下图所示: 正在上传…重新上传取消我们分别对比了该模型在Pytorch(原训练框架),onnxruntime, Tenso

【Html】JS实现左滑删除功能及注意要点_js設置左滑刪除效果_喵喵学姐的博客-程序员秘密

实现思路:使用touchstart事件与touchmove事件获取到的位置做判断,从而知道是左滑还是右滑,左滑则显示删除按钮,右滑则隐藏。具体代码看下面~touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。Html:&lt;div class="item"&gt; &lt;div class="item-box"&gt;

[转载精品] 最全韩国PPT图表集合733张(锐普PPT论坛)_iteye_6794的博客-程序员秘密

http://www.rapidbbs.cn/forum.php?mod=viewthread&amp;amp;tid=23602

es6--promise发起ajax请求_es6用promise请求ajax_别浪呀的博客-程序员秘密

promise所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。感觉跟java的Future类很像啊,有木有!我们可以通过Promise的构造函数来创建Promise对象,并在内部封装一个异步...

hdu 1087 Super Jumping! Jumping! Jumping! 【动规】_registor11的博客-程序员秘密

题目Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. Maybe you are a good boy, and know little about this game, so I introduce it to you now.The game can be played by two or more than two players. It consis

依托于三维GIS技术的系统平台现状分析及前景探讨_ztmap2020的博客-程序员秘密

自上个世纪60年代在加拿大首度开发设计了地理信息系统(GIS)以来,不到50年间,GIS技术取得了飞速的成长,在交通、电力、水利、土地管理、电信、消防及城市规划治理等领域都有了广泛和高效的运用。目前,这个技术已攻克了从二维到三维的“瓶颈”,出现了三维空间内的GIS技术,给人们带来了新的视觉冲击,成为一新的发展趋向。1.三维地理信息系统概述三维地理信息系统(简称GIS),是以电子计算机的软件和硬件做为依托,以空间数据库技术做为基础,对本维空间数据加以科学的分析和管理,为决策、规划和研究、管理提供真实信息

推荐文章

热门文章

相关标签