В Visual C++ возможно использовать #pragma warning (disable: ...)
. Также я нашел, что в GCC можно переопределить на флаги компилятора файла. Как я могу сделать это для "следующей строки", или с семантикой нажатия/поп вокруг областей кода с помощью GCC?
Похоже, что это можно сделать. Я не могу определить версию 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 */
#pragma GCC diagnostic ignored "-Wformat"
Замените "-Wformat" на название вашего флага предупреждения.
AFAIK не существует способа использовать семантику push/pop для этой опции.
Вместо того, чтобы отключать предупреждения , стиль gcc обычно использует либо стандартные конструкции C, либо расширение __ attribute __
, чтобы сообщить компилятору больше о ваших намерениях. Например, предупреждение о присвоении, используемом в качестве условия, подавляется путем помещения присвоения в круглые скобки, то есть if ((p = malloc (cnt)))
вместо if (p = malloc (cnt ))
.Предупреждения о неиспользуемых аргументах функции могут быть подавлены каким-то странным __ атрибутом __
, который я никогда не могу вспомнить, или самоназначением и т.д. правильный код.