Сделать gcc предупреждение об ошибке?
Я получаю это предупреждение от GCC:
предупреждение: не может передавать объекты типа не-POD "класс" Что-то "через"..."; вызов прерывается во время выполнения
Это довольно смертельно, тем более, что он вызывает прерывание. Почему это не ошибка? Я хотел бы сделать это ошибкой, но:
Ответы
Ответ 1
Я не уверен, что такое правильное предупреждение, но как только вы его нашли, вы можете изменить его расположение следующим образом (используя "формат" в качестве примера):
#pragma GCC diagnostic error "-Wformat"
Или, как указывает strager:
gcc -Werror=format ...
Изменить: Я только что проверил источник gcc для этого, и это конкретное предупреждение не может быть отключено с помощью флагов командной строки.
Ответ 2
-Werror=specific-warning
превратит указанный -Wspecific-warning
в ошибку в GCC 4.3.x или новее. В 4.1.2 работает только -Werror-implicit-function-declaration
. Обратите внимание на дефис вместо знака равенства - он работает только для этого конкретного случая, а не для других. Это одно из наиболее серьезных распространенных предупреждений, и это определенно удобно сделать ошибку.
Кроме того, более старые версии GCC, похоже, предоставляют кувалду -Werror
, чтобы каждое последнее предупреждение выдает ошибку.
Ответ 3
Похоже, что есть множество других предупреждений, которые вы не хотите превращать в ошибки (используя флаг -Werror). В целом, это хорошая практика для исправления всех предупреждений. Использование -Werror заставляет это.
Ответ 4
Вы можете использовать флаг компилятора -Werror
, чтобы превращать все или некоторые предупреждения в ошибки.
Ответ 5
Вы можете использовать параметр -fdiagnostics-show-option, чтобы увидеть параметр -W, который применяется к определенному предупреждению.
К сожалению, в этом случае нет специального варианта, который охватывает это предупреждение.
Похоже, что в gcc-4.5 будет лучше поддерживать эту функцию.