2012-03-19 3 views
11

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

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

warning: ISO C does not permit named variadic macros 

И его спутница предупреждение

warning: ISO C99 requires rest arguments to be used 

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

warning: anonymous variadic macros were introduced in C99 

Для чего я не вижу никаких ответов.

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

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

+0

возможно дубликат [Are VARIADIC макросы нестандартным?] (Http://stackoverflow.com/questions/4786649/are-variadic-macros-nonstandard) –

+1

Использование C++ 11. Введите '-std = C++ 0x' или' -std = C++ 11' в вашу командную строку GCC. Или просто игнорируйте предупреждение. –

+0

Да, с использованием C++ 11 еще нет в карточках, его просто недостаточно поддерживали (пока) – Petriborg

ответ

13

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

Edit: (с комментариями)

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

#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 
+1

Есть ли способ отключить предупреждение для раздела кода, но оставить его вообще? Если я использую это, как отключить 'предупреждение: ISO C99 требует аргументов отдыха, которые будут использоваться' – Petriborg

+1

@Petriborg: http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gcc/Diagnostic-Pragmas.html# Diagnostic-Pragmas – Hasturkun

+0

Спасибо @Hasturkun Я попробую это – Petriborg

Смежные вопросы