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.