Сделать одно gcc предупреждение об ошибке? - PullRequest
26 голосов
/ 24 января 2009

Я получаю это предупреждение от GCC:

предупреждение: не может передавать объекты не POD-типа 'class Something' через '...'; вызов будет прерван во время выполнения

Это довольно смертельно, тем более, что это вызывает прерывание. Почему это не ошибка? Я хотел бы сделать это ошибкой, но:

  1. Как сделать конкретное предупреждение об ошибке?
  2. Какое предупреждение это? Согласно http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html, -Wno-invalid-offsetof выглядит как флаг, чтобы скрыть его, но это не

Ответы [ 5 ]

24 голосов
/ 24 января 2009

Я не уверен, что является правильным предупреждением, но как только вы его нашли, вы можете изменить его расположение следующим образом (используя «формат» в качестве примера):

#pragma GCC diagnostic error "-Wformat"

Или, как указывает Стрейджер:

gcc -Werror=format ...

Редактировать: Я только что проверил источник gcc для этого, и это конкретное предупреждение нельзя отключить с помощью флагов командной строки.

12 голосов
/ 26 июня 2009

-Werror=specific-warning превратит указанное -Wspecific-warning в ошибку в GCC 4.3.x или новее. В 4.1.2 работает только -Werror-implicit-function-declaration. Обратите внимание на дефис вместо знака равенства - он работает только для этого конкретного случая, а не для других. Это одно из наиболее серьезных распространенных предупреждений, и его, безусловно, удобно сделать ошибочным.

Кроме того, более старые версии GCC, похоже, предоставляют кувалду -Werror, позволяющую сделать каждое последнее предупреждение ошибкой.

7 голосов
/ 24 января 2009

Похоже, есть множество других предупреждений о том, что вы не хотите превращаться в ошибки (используя флаг -Werror). В целом, это хорошая практика, чтобы исправить все предупреждения. Использование -Werror вызывает это.

4 голосов
/ 24 января 2009

Вы можете использовать флаг компилятора -Werror, чтобы превратить все или некоторые предупреждения в ошибки.

2 голосов
/ 16 декабря 2009

Вы можете использовать -fdiagnostics-show-option, чтобы увидеть параметр -W, который применяется к определенному предупреждению.

К сожалению, в этом случае нет конкретного параметра, охватывающего это предупреждение.

Похоже, в gcc-4.5 будет лучшая поддержка.

...