2009-07-03 3 views
36

В отношении компиляторов Microsoft, конкретные предупреждения могут быть отключены с помощью #pragma, без отключения других предупреждений. Это чрезвычайно полезная функция, если компилятор предупреждает о чем-то, что «должно быть сделано».отключить определенные предупреждения в gcc

Имеет ли GCC на данный момент аналогичную функцию? Похоже, что это достаточно очевидная функция, что ее невозможно представить, что у нее не будет этой функции, но более старая информация в Интернете предполагает, что эта функция не существует.

Что можно использовать в GCC?

В частности, мне нравится использовать многосимвольные константы, такие как 'abc'. Они эффективно оцениваются как базовое 256-число - очень удобная функция, но она вызывает предупреждение. Его очень удобно для включения четырех символьных строк в оператор case.

+3

Дубли: http://stackoverflow.com/questions/487108/how-to-supress-specific-warnings-in-g http://stackoverflow.com/ вопросы/925179/выборочно-удаление-предупреждение http://stackoverflow.com/questions/965093/selectively-disable-gcc-warnings-for-only-part-of-a-translation-unit –

ответ

33

Это можно сделать с помощью gcc diagnostic pragmas.

+0

Это будет полезно после обновления к новому GCC. Похоже, это более новая функция. –

24

Из ССАГПЗ инструкции:

Many options have long names starting with -f or with -W---for example, 
    -fforce-mem, -fstrength-reduce, -Wformat and so on. Most of these have 
    both positive and negative forms; the negative form of -ffoo would be 
    -fno-foo. This manual documents only one of these two forms, whichever 
    one is not the default. 

Но если вы спрашиваете, есть ли источник уровня предупреждения отключить, я не знаю, если эта функция существует в НКУ.

11

-Wno-multichar:

Не предупреждать, если multicharacter постоянная ('FOOF') используется. Обычно они указывают опечатку в код пользователя, поскольку они имеют значения, определенные реализацией, и не должны использоваться в портативном коде .

More information.

7

Внутри исходного кода записи:

#pragma GCC diagnostic ignored "-Wno-multichar" 

// code with warnings but wont be displayed now... 
+0

Также приятно отметить, что для небольших битов кода можно установить диагностику с помощью «#pragma GCC diagnostic push» и «#pragma GCC diagnostic pop». – Hector