一个函数有多个 goto 代码块会怎样?

最近在看 haproxy 的源码,使用了太多 goto 跳转,实在让人头大。

当一个代码块执行完后会执行哪里的代码呢?

写几个例子来总结一下规律吧。

#include<stdio.h>

void main() {
    goto block_1;
    printf("Back\n");

block_1:
    printf("Block_1\n");

block_2:
    printf("Block_2\n");
}
# ./goto
Block_1
Block_2

block_1 的代码执行结束后,继续向下执行 block_2 中的代码。并且不会再回到调用 goto 的下一行。

#include<stdio.h>

void main() {
    printf("Do something\n");

block_1:
    printf("Block_1\n");

block_2:
    printf("Block_2\n");
}
# ./goto
Do something
Block_1
Block_2

即使没有 goto 语句,在正常运行到 block_1 和 block_2 的时候,也会执行内部的代码。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容