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

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

Используйте параметр 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