Очистка Си/Си++ кода, выявляет проблемы с вариативным макросы


Мы делаем некоторую очистку кода, исправляем сравнения со знаком / без знака, запускаем статический анализ и т. д. На основе кода 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 11

1 ответ:

Используйте опцию 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