Мы улавливаем предупреждения от GCC 7 для неявного падения в инструкции switch. Раньше мы очищали их в соответствии с Кланом (что причина для комментария, приведенного ниже):
g++ -DNDEBUG -g2 -O3 -std=c++17 -Wall -Wextra -fPIC -c authenc.cpp
asn.cpp: In member function ‘void EncodedObjectFilter::Put(const byte*, size_t)’:
asn.cpp:359:18: warning: this statement may fall through [-Wimplicit-fallthrough=]
m_state = BODY; // fall through
^
asn.cpp:361:3: note: here
case BODY:
^~~~
Руководство GCC позволяет использовать __attribute__ ((fallthrough))
, но не переносится. В руководстве также говорится: "... также можно добавить пропущенный комментарий, чтобы отключить предупреждение", но он предлагает только FALLTHRU
(это действительно единственный выбор?):
switch (cond)
{
case 1:
bar (0);
/* FALLTHRU */
default:
…
}
Есть ли переносимый способ очистить падение через предупреждение для Clang и GCC? Если да, то что это?