C语言中的goto语句

news/2024/9/25 15:23:10/

goto label;

C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。

#include <stdio.h>
int main(){goto first;printf("我是你好\n");first:printf("nihao\n");second:printf("This is 2\n");return 0;
} 

在这里插入图片描述

使用goto会跳到标签的位置继续向下执行:
标签的用法和变量定义一样,常用字母开头,加上:
一般都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪

可以用在Linux的设备驱动中:

 error_1:   // 删除一个driverdevice_destroy(ds18b20->ds18b20_class, ds18b20->dev_num);error_2:    // 删除一个classclass_destroy(ds18b20->ds18b20_class);error_3:   // 删除字符设备cdev_del(&ds18b20->ds18b20_cdev);error_4:   // 释放设备号unregister_chrdev_region(ds18b20->dev_num, 1);error_5:   // 释放内存kfree(ds18b20);return -1

根据设备的注册情况,在不同错误下,跳转到不同的节点释放语句处。使其往下依次释放掉注册的设备或驱动。


http://www.ppmy.cn/news/1453953.html

相关文章

玩comfyui踩过的坑之使用ComfyUI_Custom_NODES_ALEKPET翻译组件问题

环境&#xff1a; 秋叶安装包&#xff0c;安装ComfyUI_Custom_NODES_ALEKPET组件或者直接下载网盘中的包&#xff0c;直接解压包到comfyui根目录/custom_nodes/&#xff0c;重启后&#xff0c;按指导文件操作。 注意&#xff1a;网盘指导包中有配置好的流程json文件&#xff0…

1-36 双列集合

一 Map集合 1.存储特点(重点记忆:) 以键值对(KEY-VALUE)形式存储 2.特点: ①将键值对看做对象进行存储 ②KEY 不能重复,VALUE可以重复 ③每一对K-V都是意义对应的映射关系 3.拓展:Map集合是双列集合,由两个单列集合组成的 分析KEY和VALUE所在的是什么种类集合 ①KEY不…

【Linux】对信号产生的内核级理解

一、键盘产生信号 键盘产生信号这里就要涉及一个重要的概念了&#xff0c;叫硬件中断。我这里会粗粒度地说一下键盘产生信号&#xff0c;以及信号被上层软件读到的过程&#xff0c;只是说一下我自己的理解。 1.1、硬件中断 硬件中断是计算机中的一种机制&#xff0c;它允许硬件…

谈谈Tcpserver开启多线程并发处理遇到的问题!

最近在学习最基础的socket网络编程&#xff0c;在Tcpserver开启多线程并发处理时遇到了一些问题&#xff01; 说明 在linux以及Windows的共享文件夹进行编写的&#xff0c;所以代码中有的部分使用 #ifdef WIN64 ... #else ... #endif 进入正题&#xff01;&#xff01;&…

问题 A: 实验11_4_初识链表

题目描述 已知一个正整数序列&#xff0c;个数未知&#xff0c;但至少有一个元素&#xff0c;你的任务是建立一个单链表&#xff0c;并使用该链表存储这个正整数序列&#xff0c;然后统计这个序列中元素的最大值与最小值&#xff0c;计算序列全部元素之和。正整数的输入用-1作…

ES数据存储与查询基本原理

Elasticsearch&#xff08;ES&#xff09;简介 Elasticsearch&#xff08;ES&#xff09;是一个分布式、可扩展、近实时的搜索和分析引擎&#xff0c;它基于Lucene&#xff0c;设计用于云计算中&#xff0c;处理大规模文档检索和数据分析任务&#xff0c;常用于实现内部搜索引…

ASP.NET网上书店

摘要 本设计尝试用ASP.NET在网络上架构一个电子书城&#xff0c;以使每一位顾客不用出门在家里就能够通过上网来轻松购书。本文从理论和实践两个角度出发&#xff0c;对一个具有数据挖掘功能电子书城进行设计与实现分析。论文首先较为详尽地介绍了面向对象分析与设计的有关概念…

github.com/gin-contrib/timeout应前置使用

首先&#xff0c;gin的中间件是有执行顺序的&#xff0c;就是按照添加的顺序进行的。之前没在意&#xff0c;我把timeout中间件放在了最后面&#xff0c;导致业务一直不正常&#xff0c;后面debug源码总算看明白了&#xff1a; 源码入口&#xff1a; func(c *gin.Context) {fi…