Через невелику помилку я випадково знайшов цю конструкцію:
int main(void) {
char foo = 'c';
switch(foo)
{
printf("Cant Touch This\n"); // This line is Unreachable
case 'a': printf("A\n"); break;
case 'b': printf("B\n"); break;
case 'c': printf("C\n"); break;
case 'd': printf("D\n"); break;
}
return 0;
}
Здається, що printf
вгорі switch
твердження є дійсним, але також абсолютно недосяжним.
Я отримав чисту компіляцію, навіть не попереджуючи про недосяжний код, але це здається безглуздим.
Чи повинен цей компілятор позначити це як недоступний код?
Це взагалі служить якійсь цілі?
goto
входити і виходити з інакше недосяжної частини, яка може бути корисною для різних хакерів.
switch
це просто умовна кількість goto
з декількома етикетками. Існує більш-менш однакові обмеження щодо його тіла, як і у звичайного блоку коду, заповненого готовими мітками.
-Wswitch-unreachable