Hi

I got a code base with the following indentation style for break within
switch/case:

---------------%<---------------
#include <string.h>

int main(void)
{
  const char *c = "XX";
  int out = 0;

  switch (c[0]) {
  case 'X': if (strcmp(c, "XX")) out = 1; break; /* ok */
  case 'Y': if (strcmp(c, "XY") &&
                !strcmp(c, "YY")
                ) out = 1; break; /* not ok ? */
  }
}
---------------%<---------------

With

$ gcc --version
gcc (GCC) 7.1.1 20170622 (Red Hat 7.1.1-3)

I get the following with -Wall or -Wmisleading-indentation on:

> d.c: In function 'main':
> d.c:10:13: warning: this 'if' clause does not guard... 
> [-Wmisleading-indentation]
>    case 'Y': if (strcmp(c, "XY") &&
>              ^~
> d.c:12:14: note: ...this statement, but the latter is misleadingly indented 
> as if it were guarded by the 'if'
>    ) out = 1; break;
>               ^~~~~
> d.c:6:7: warning: variable 'out' set but not used [-Wunused-but-set-variable]
>    int out = 0;
>        ^~~

Droping/aligning the second break on its own line silences the warning,
but I see no reason to do so. Pls. advise!

Stefan

Reply via email to