2012-03-19 15 views
11

Estamos haciendo algo de limpieza de código, arreglando comparaciones con firmas/no firmas, ejecutando análisis estático, etc., en la base de código de C, C++ y Java.Limpiar código C/C++ revela problemas con macros variadas

Una de las advertencias que estamos recibiendo es

warning: ISO C does not permit named variadic macros 

y su compañera de advertencia

warning: ISO C99 requires rest arguments to be used 

Ahora, en el código C He utilizado el C99 standard variadic macro para solucionar el problema, pero en el C++ código, ¿cuál es la respuesta correcta? El uso del mismo estilo C99 da como resultado una advertencia diferente

warning: anonymous variadic macros were introduced in C99 

Para las que no veo ninguna respuesta.

Estamos usando GCC (G ++) 4.4.3 en Linux.

Estoy esperando que hay alguna bandera, o cualquier otro método que se puede corregir, o desactivarlo para la sección de código específica - pero su registro para el que se utiliza en casi todos los archivos ...

+0

posible duplicado de [Son variadic macros no estándar?] (Http://stackoverflow.com/questions/4786649/are-variadic-macros-nonstandard) –

+1

Utilice C++ 11. Escriba '-std = C++ 0x' o' -std = C++ 11' en su línea de comando de GCC. O simplemente ignora la advertencia. –

+0

Sí, usar C++ 11 aún no está en las tarjetas, simplemente no es compatible (todavía) – Petriborg

Respuesta

13

Uso la opción gcc -Wno-variadic-macros para desactivar esa advertencia en particular.

Editar: (de comentarios)

Para desactivar la advertencia por una sección de código y dejarlo en general, utilizar #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

¿Hay alguna forma de deshabilitar la advertencia para una sección de código pero dejarlo en general? Si uso esto, ¿cómo desactivo la advertencia ': ISO C99 requiere que se usen los argumentos de descanso' – Petriborg

+1

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

+0

Gracias @Hasturkun Lo intentaré – Petriborg