Очистка кода C / C ++ выявляет проблемы с переменными макросами - PullRequest
12 голосов
/ 19 марта 2012

Мы проводим некоторую очистку кода, исправляем сравнения со знаком и без знака, выполняем статический анализ и т. Д. На базе кода C, C ++ и Java.

Одно из предупреждений, которое мы получаем, -

warning: ISO C does not permit named variadic macros

И его сопутствующее предупреждение

warning: ISO C99 requires rest arguments to be used

Теперь в коде C я использовал стандартный вариационный макрос C99 для решения проблемы, но в C ++код, какой правильный ответ?Использование того же стиля C99 приводит к другому предупреждению

warning: anonymous variadic macros were introduced in C99 

Ответы на которые я не вижу.

Мы используем GCC (G ++) 4.4.3 в Linux.

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

1 Ответ

14 голосов
/ 19 марта 2012

Используйте опцию gcc -Wno-variadic-macros, чтобы отключить это конкретное предупреждение.

Редактировать: (из комментариев)

Чтобы отключить предупреждение для части кода, но оставить его включенным, используйте #pragma GCC diagnostic , описанный здесь .

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wno-variadic-macros"

    // Your code and/or include files
    // (No variadic warnings here)

#pragma GCC diagnostic pop
...