Я играл с некоторым синтаксисом и обнаружил некоторые странные правила компиляции, задавался вопросом, что за аргумент для этого
C не будет компилировать это, но С++ будет:
switch (argc) {
case 0:
int foo;
break;
default:
break;
}
Оба C и С++ скомпилируют этот:
switch (argc) {
case 0:
; int foo;
break;
default:
break;
}
C будет компилировать это, но не С++:
switch (argc) {
case 0:
; int foo = 0;
break;
default:
break;
}
gcc -v
имеет значение gcc version 4.9.3 (MacPorts gcc49 4.9.3_0)
, если это имеет значение. Я понимаю, что решение состоит в том, чтобы обернуть содержимое case 0:
фигурными скобками, но меня больше интересует аргументация ошибок компиляции