不同的编码风格如何缩进开关盒?

时间:2018-03-10 03:53:53

标签: c code-formatting

前言:这个问题与此问题不重复:

switch case indentation

这个问题也不是基于意见的。我不是在追求最好的"样式。我不是在问什么是"对"要做的事。

我要问的是不同的编码样式如何缩进switch语句,它们的case标签和实际语句。

我对如何缩进switch语句特别感兴趣   - K& R风格
  - Linux内核风格
  - GNU风格
  - Java风格

我的想法是能够在我正在使用的任何代码中保持一致,但大多数缩进样式示例都没有切换案例。我喜欢一致性,而且我写的东西与我写的东西实际上并不匹配的想法是可以忍受的,但是不讨厌。

2 个答案:

答案 0 :(得分:1)

由于这个问题正在收集像雨水一样的收尾,我决定找出每种风格来自哪里以及他们在这件事上说了些什么。随意添加。 (例如,我没有K& R或Whitesmiths的副本)

Java风格

由Oracle指定

www.oracle.com/technetwork/java/javase/documentation/codeconventions-142311.html

switch (condition) {
case ABC:
    statements;
    /* falls through */
case DEF:
    statements;
    break;
case XYZ:
    statements;
    break;
default:
    statements;
    break;
}

指定省略break时的注释。

Linux内核风格

在Linux内核中使用 - 我希望

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/kernel/kcov.c?h=v4.15.8

switch (size) {
case 8:
        type |= KCOV_CMP_SIZE(0);
        break;
case 16:
        type |= KCOV_CMP_SIZE(1);
        break;
case 32:
        type |= KCOV_CMP_SIZE(2);
        break;
case 64:
        type |= KCOV_CMP_SIZE(3);
        break;
default:
        return;
}

我无法找到落实的例子。

GNU风格

有一本书。

https://www.gnu.org/prep/standards/standards.html

什么也没说。根据维基百科的建议,查找了GNU-Emacs。

https://github.com/emacs-mirror/emacs/blob/master/src/cm.c

switch (use)
  {
  case USEHOME:
    statement;
    break;

  case USELL:
    statement;
    break;

  case USECR:
    statement;
    break;
  }

next statement;

再次,没有突破。原样:在... ... ... ... ...

答案 1 :(得分:0)

摘自他的书(第59页):

switch (c) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
    ndigit[c-'0']++;
    break;
case ' ':
case '\n':
case '\t':
    nwhite++;
    break;
default:
    nother++;
    break;
}

有点不适应,但其他方面还是可见的编码风格。