LINUX.ORG.RU

GCC fallthrough в switch

 ,


2

5

Недавно задался целью найти способ заставить GCC генерировать предупреждение о fallthrough в switch. Целевая версия GCC =5.2 -std=c++14.

Судя по всему, аттрибут [[fallthrough]] войдет в C++17. Однако нашлась страничка о неком __attribute__((fallthrough)): https://gcc.gnu.org/onlinedocs/gcc/Statement-Attributes.html с упоминанием флага -Wimplicit-fallthrough.

После беглой проверки на melpon.org/wandbox на разных версиях GCC оказалось, что флаг поддерживается только в GCC 7 (который еще не вышел). Ну и стало ясно, что для GCC 5.2 такого ворнинга нет.

Далее я накопал еще обсуждение #7652 на багзилле о, собственно, имплеиентации -Wimplicit-fallthrough. Но пока читал коментарии «пальцем в небо» попробовал вот такой код:

    int a;
    switch (2) {
        case 2:
            a = 2;
            [[gcc::fallthrough]]
        default:
            a = 1;
    }
http://melpon.org/wandbox/permlink/PSr9Mh7TERKl1I6w

Так вот, вопрос: почему оно компилируется? Не баг ли?

заменил твое на [[gcc::someabstractfuckingshit]] и тоже компилируется. вывод сам сделаешь?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.