c++ gcc warnings pragma

c++ - En gcc, ¿cómo silenciar la advertencia permisiva?



warnings pragma (2)

Tal vez sea un poco tarde para esto, pero uno de estos debería hacer lo que quisieras:

#pragma GCC diagnostic ignored "-fpermissive"

o

#pragma GCC diagnostic ignored "-pedantic"

"ignorado" es la forma en que usted aplasta un diagnóstico por completo, y la inversa de -fpermissive es -pedantic , por razones históricas.

-fpermissive un archivo de una biblioteca de terceros que genera un error que se puede -fpermissive a una advertencia con -fpermissive . Pero como no quiero "contaminar" mi registro de compilación con estas advertencias, quiero deshabilitar completamente estos mensajes.

Hasta ahora, establezco la opción -fpermissive con un pragma de diagnóstico al incluir el archivo; algo como:

#pragma GCC diagnostic push #pragma GCC diagnostic warning "-fpermissive" #include <third-party-file.h> #pragma GCC diagnostic pop

Como gcc generalmente proporciona una versión "positiva" y "negativa" de las banderas -f , pensé en ignorar la característica "no permisiva":

#pragma GCC diagnostic ignored "-fno-permissive" #include <third-party-file.h>

Pero no parece haber una versión "negativa" de la -fpermissive (estoy usando gcc 4.6.3; pero incluso la versión 4.7.0 no la tiene ).

¿Alguna posibilidad puedo imitar este comportamiento? ¡Gracias!


tldr: no puede desactivar la salida fpermissive después de GCC 4.7.

Solo publico esto aquí para que tenga más visibilidad: desafortunadamente, la respuesta de zwol (aunque bien intencionada y potencialmente útil para aquellos con versiones anteriores de GCC) no funciona para versiones más recientes de GCC. A partir de GCC 4.8 y posteriores, no puede desactivar la salida fpermissive. o11c en su comentario al OP proporciona útil el siguiente error que rastrea esto:

gcc.gnu.org/bugzilla/show_bug.cgi?id=81787

Tenga en cuenta que está en el estado "RESUELTO NO VÁLIDO", por lo que la incapacidad de desactivarlo es el comportamiento esperado y no hay planes para cambiarlo.