Через невелику помилку я випадково знайшов цю конструкцію:
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