Как отключить предупреждения GCC для нескольких строк кода

В Visual C++ возможно использовать #pragma warning (disable: ...). Также я нашел, что в GCC можно переопределить на флаги компилятора файла. Как я могу сделать это для "следующей строки", или с семантикой нажатия/поп вокруг областей кода с помощью GCC?

200
задан Matt Joiner 15 November 2018 в 12:41
поделиться

3 ответа

Похоже, что это можно сделать. Я не могу определить версию GCC, в которой это было добавлено, но это было где-то до июня 2010 года.

Вот пример:

#pragma GCC diagnostic error "-Wuninitialized"
    foo(a);         /* error is given for this one */
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wuninitialized"
    foo(b);         /* no diagnostic for this one */
#pragma GCC diagnostic pop
    foo(c);         /* error is given for this one */
#pragma GCC diagnostic pop
    foo(d);         /* depends on command line options */
209
ответ дан 23 November 2019 в 05:06
поделиться
#pragma GCC diagnostic ignored "-Wformat"

Замените "-Wformat" на название вашего флага предупреждения.

AFAIK не существует способа использовать семантику push/pop для этой опции.

18
ответ дан 23 November 2019 в 05:06
поделиться

Вместо того, чтобы отключать предупреждения , стиль gcc обычно использует либо стандартные конструкции C, либо расширение __ attribute __ , чтобы сообщить компилятору больше о ваших намерениях. Например, предупреждение о присвоении, используемом в качестве условия, подавляется путем помещения присвоения в круглые скобки, то есть if ((p = malloc (cnt))) вместо if (p = malloc (cnt )) .Предупреждения о неиспользуемых аргументах функции могут быть подавлены каким-то странным __ атрибутом __ , который я никогда не могу вспомнить, или самоназначением и т.д. правильный код.

3
ответ дан 23 November 2019 в 05:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: