C 中使用 goto 会被打吗?

2018-11-28 19:21:30 +08:00
 codechaser

突发奇想,C 中的 goto 和我以前学的单片机里的汇编跳转好像,感觉很强大啊。假如大型项目里使用 goto 会被打吗?

10988 次点击
所在节点    C
102 条回复
linxu
2018-11-28 19:52:34 +08:00
据说 goto 在 linux 内核中,也用到了。。。
codechaser
2018-11-28 20:04:55 +08:00
@liuxu 请教一下这样在线怎么在一个仓库里搜索关键字啊?我在 github 里输`goto repo:torvalds/linux`搜不到你这些
nanjoyoshino
2018-11-28 20:14:21 +08:00
只要逻辑清晰,我觉得没什么不能用的
读 redis 源码的时候,里面也有用到 goto
iceheart
2018-11-28 20:20:38 +08:00
等你维护别人的代码的时候你就不觉得 goto 好了。
gamexg
2018-11-28 20:30:22 +08:00
@scnace #13 标准库里面见过不少 goto exit。多层循环我一般是 break label 跳出
easylee
2018-11-28 20:32:14 +08:00
IDE 中使用 goto 的话,日后维护代码并无问题。

如果单纯用 vim 或者记事本,那就另当别论。
justou
2018-11-28 20:32:57 +08:00
见得最多的 goto 用法还是异常处理跟资源释放
yuriko
2018-11-28 20:33:58 +08:00
事实上是,如果问这个问题的人,一般建议是不要用,因为理解不够瞎用容易死
如果对 goto 的使用场景有了充分理解了,自然就不会再纠结这个问题
Halry
2018-11-28 20:36:07 +08:00
我之前也像别人说的不用 goto
结果 goto 真的好好用啊哈哈哈
JamesR
2018-11-28 20:51:48 +08:00
我认为跳转处离得近可以用 goto,其他就别用了。
MrStark
2018-11-28 20:53:03 +08:00
当年我就是用 goto 而惨被同事捅死的 [滑稽]
chiu
2018-11-28 21:00:21 +08:00
小型使用不会
nealwx
2018-11-28 21:02:47 +08:00
我一开始是抱着 goto 不要的想法的,后来发现 goto 用了之后反而少了很多冗余的代码
orangeade
2018-11-28 21:14:14 +08:00
cpython 里也有 goto, 这得看项目类型和团队规范了
ecee
2018-11-28 21:15:00 +08:00
c 还好吧,同事 c# 用 goto 怎么办∼_∼
rebackhua
2018-11-28 21:27:13 +08:00
goto 很好用,出错处理,多重循环之类的
BBge
2018-11-28 21:28:58 +08:00
看到 goto 就想起给一个加拿大老师当 C++助教的时候 有一个学生问老师能不能用 goto 老师一脸鄙夷的表情
ghhardy
2018-11-28 21:33:04 +08:00
Kelly 不是说了么,有时在深层嵌套的循环中测试查找一个值,一旦找到则跳出循环的时候,用 goto 能提高效率。但他同时也建议,一般尽量不要用。
Doodlister
2018-11-28 22:29:31 +08:00
尽可能少用前向 GO TO
避免使用后向 GO TO
Android2MCU
2018-11-28 22:37:32 +08:00
Android 系统源码里面也一堆 goto 呢,够大型嘛( ̄▽ ̄)


不过确实基本上都是出错处理之类的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/512453

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX