本文主要是介绍LinuxC语言中goto语句如何替代?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、goto语句的定义
- goto 语句,可以实现无条件跳转。goto 语句过于强大了,从程序中的任何地方都可以无条件跳转到任何其它地方,只要在那个地方定义一个标号就行。
- 唯一的限制是 goto 只能跳转到同一个函数中的某个标号处。
二、替代goto语句的写法
-
通常 goto 语句只用于这种场合,一个函数中任何地方出现了错误条件都可以立即跳转到函数末尾做出错处理(例如释放先前分配的资源、恢复先前改动过的全局变量等) ,处理完之后函数返回。
-
但是除此之外,在任何其它场合都不要轻易考虑使用 goto 语句。
三、C标准库函数 setjmp 和 longjmp 配合起来可以实现函数间的跳转
C标准库函数 setjmp 和 longjmp 配合起来可以实现函数间的跳转,但只能从被调用的函
数跳回到它的直接或间接调用者(同时从栈空间弹出一个或多个栈帧) ,而不能从一个函数
跳转到另一个和它毫不相干的函数中。 setjmp/longjmp 函数主要也是用于出错处理,比如函数 A 调用函数 B ,函数 B 调用函数 C ,如果在 C 中出现某个错误条件,使得函数 B 和 C 继续执行下去都没有意义了,可以利用 setjmp/longjmp 机制快速返回到函数 A 做
出错处理。
这篇关于LinuxC语言中goto语句如何替代?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!