加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 默认位于开关块的开头

发布时间:2020-12-16 06:58:48 所属栏目:百科 来源:网络整理
导读:在浏览解析器的代码时,例如,Parser.cpp里面clang编译器的clang / Parse目录 switch (Close) {default: break;case tok::r_paren : LHSName = "("; DID = diag::err_expected_rparen; break;case tok::r_brace : LHSName = "{"; DID = diag::err_expected_rbr
在浏览解析器的代码时,例如,Parser.cpp里面clang编译器的clang / Parse目录

switch (Close) {
default: break;
case tok::r_paren : LHSName = "("; DID = diag::err_expected_rparen; break;
case tok::r_brace : LHSName = "{"; DID = diag::err_expected_rbrace; break;
case tok::r_square: LHSName = "["; DID = diag::err_expected_rsquare; break;
case tok::greater:  LHSName = "<"; DID = diag::err_expected_greater; break;
case tok::greatergreatergreater:
                    LHSName = "<<<"; DID = diag::err_expected_ggg; break;
}

我看到默认是在开头.是否有任何理由保持这种方式.通常我们会将默认值保留在最后,所以我有点困惑.

解决方法

只要您包含休息时间,订单就没有区别.

顺便说一句,我喜欢在每个案例或默认值之前立即放置休息时间.验证遵循此规则比尝试展望每个案例陈述的结尾要容易得多.

switch (Close) {
  break; default:
  break; case tok::r_paren : LHSName = "("; DID = diag::err_expected_rparen;
  break; case tok::r_brace : LHSName = "{"; DID = diag::err_expected_rbrace;
  break; case tok::r_square: LHSName = "["; DID = diag::err_expected_rsquare;
  break; case tok::greater:  LHSName = "<"; DID = diag::err_expected_greater;
  break; case tok::greatergreatergreater: LHSName = "<<<"; DID = diag::err_expected_ggg;
}

如果你将break解释为“不要在任何其他情况下陷入这种情况”,你可能会发现这更容易理解.而不是“不要从这个案件陷入任何后续案件.”

在这种布局中,很容易看出是否缺少休息时间,因此迫使作者(和读者)问他/她“我想要在这里进行跟进吗?”.所有的休息时间排得很好,如果一个人失踪就很明显了.

澄清:我的答案中没有“魔力”.我只是以一种对我来说更易读的方式放置我的空白.空白并不重要,因此我可以自由地做到这一点.在交换机的最后一个中断是多余的.如果缺少,则不允许编译器循环到开关的顶部,就好像它是某种while循环一样.同样,交换机一开始的冗余中断不会发生任何变化,必须由编译器接受(并忽略).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读