C语言中如何实现同一项目中的快速跳转
goto语句与jmp语句
goto语句与jmp语句的相同点
两者都能够实现快速跳转,而事实上,尽管这种快速跳转极可能导致语句逻辑混乱,既不容易理解,也不方便调试、修改,但这只能看成是程序员自己的问题。语句本身没有错,至少它在实现快速跳转这一方面能够产生极大的作用。
然而,我们依然不建议使用这两种语句,一方面,由于它本身会使逻辑出现跳跃,不利于程序的结构化;另一方面,非常容易产生某些未知的错误。以此,我们建议不使用或少使用这两种语句。
goto语句与jmp语句的不同点(附使用方法)
goto语句只能够实现同一函数下的跳转
无论是main函数也好,自定义函数也罢,goto语句不能够在不同的函数间跳转。但这并非限制在同一定义域内:
#include<stdio.h>
int main(){
aa:puts("asdf");
int i=0;
while(i>10){
puts("qwer");
goto aa;
i++;
}
}

这是在同一函数内不同定义域中的跳转
#include<stdio.h>
void asdf(){
puts("qwer");
goto aa;
}
int main(){
aa:puts("asdf");
asdf();
}

本文探讨了C语言中goto和jmp语句的使用,包括它们在快速跳转上的相似性和不同点。goto仅限于在同一函数内的跳转,而jmp语句(通过longjmp)可以实现跨函数甚至跨源文件的跳转。然而,由于可能导致的逻辑混乱和调试困难,不推荐频繁使用这两种语句。文章中还提出了关于extern声明和longjmp使用时遇到的问题,引发对这两点的讨论。
最低0.47元/天 解锁文章
1967

被折叠的 条评论
为什么被折叠?



