Ответ 1
На самом деле вам, вероятно, не нужны все предупреждения, потому что ряд предупреждений можно считать стилистическими или субъективными, а другие (например, тот, с которым вы столкнулись) просто глупы в вашей ситуации.
-Weverything
был первоначально построен по двум причинам:
- обнаружение: довольно сложно в противном случае получить список всех доступных предупреждений
- альтернатива черным спискам: с помощью gcc вы можете выбрать предупреждения, которые вы хотите применить (белый список),
-Weverything
вы вишневы выбираете те, которые вы не хотите применять; преимущество заключается в том, что при переходе на новую версию компилятора вы, скорее всего, выиграете от новых предупреждений.
Очевидно, что обнаружение на самом деле не совместимо с производством; поэтому вы, похоже, попадаете в черный список.
Система диагностики Clang выведет (по умолчанию) название самой конкретной группы предупреждений, которая отвечает за генерацию предупреждения (здесь -Wc++98-compat
), и каждую группу предупреждений можно отключить, добавив no-
сразу после -W
.
Поэтому для черного списка вы получаете:
-Weverything -Wno-c++98-compat -Wno-...
И вам рекомендуется периодически пересматривать список вносимых в черный список предупреждений (например, при обновлении до более нового компилятора).