2009-06-04 12 views
5

Tengo curiosidad por si hay una opción para desactivar las advertencias de gcc sobre un parámetro que no es válido para el idioma que se está compilando.Desactivar la advertencia de gcc para las opciones incompatibles

Ex:

cc1: warning: command line option "-Wno-deprecated" is valid for C++/Java/ObjC++ but not for C 

Nuestro sistema de construcción pasa a las advertencias que hemos decidido sobre globalmente a través de una generación. Tenemos el código C/C++ y las advertencias se vuelven realmente molestas cuando intentamos encontrar advertencias reales.

¿Alguna sugerencia?

+0

En mi humilde opinión esto se resuelve mejor en el nivel de hacer. Sabes qué archivos fuente son C y cuáles son C++, ¿verdad? –

Respuesta

2

Me parece que si existiera tal opción, tendría que haber una opción adicional para desactivar las advertencias sobre esa opción, y así sucesivamente infinitamente. Entonces sospecho que no hay.

Tener las mismas opciones para compilaciones de idiomas completamente diferentes parece un tanto extraño de todas formas: tendría diferentes opciones definidas como macros de archivo y se usarían apropiadamente para diferentes objetivos.

+0

Me doy cuenta de que se ve extraño para un extraño. No estoy a cargo del sistema de compilación, estoy tratando de limpiarlo. Realmente no tengo el poder de hacer la separación de los dos. –

0

Alas gcc no tiene la capacidad de activar o desactivar las advertencias individuales. Algunas advertencias tienen una cubierta especial y se pueden establecer niveles de advertencia, pero no hay forma de desactivar las advertencias que no te interesan.

Quiero decir, ¿a quién le importaría perder una línea vacía al final del archivo? Sé que hay un parche para apagarlo, pero construir mi compilador desde la fuente es demasiado.

Para su sistema de compilación es posible que desee definir conjuntos de advertencias por separado para diferentes idiomas. ¿Qué pasará si necesita usar algún otro compilador, no gcc?

+0

Nuestro sistema de compilación es compatible con múltiples compiladores, 3 en realidad. En 6 arquitecturas diferentes. GCC compila el código C antiguo es el caso límite, y -> por qué hice mi pregunta ... –

3

Para habilitar advertencias específicas en gcc -Wxxxx y desactivarlos con -Wno-xxxx.

Desde el GCC Warning Options:

Puede solicitar muchas advertencias específicas con las opciones que empiezan -W', for example -Wimplicit to request warnings on implicit declarations. Each of these specific warning options also has a negative form beginning -Wno-' para desactivar las advertencias; por ejemplo, -Wno-implícito. Este manual enumera solo uno de los dos formularios, cualquiera que no sea el predeterminado.

Sin embargo, @Neil tiene razón sobre la separación de opciones para diferentes idiomas. Si usa make, puede, por ejemplo, ponga todas las opciones C en CFLAGS y todas las opciones de C++ en CCFLAGS.

+0

La opción de advertencia está generando la advertencia, no creo que -Wno * sea aplicable en este caso. –

0

Si compila sus archivos C como C++ es una opción para usted, -x c++.

+0

que es una muy mala idea, traerán libstdC+++ para vincular cuál es * enorme * – ismail

2

Si configura la variable CFLAGS, solo afectará a los archivos C, si establece la variable CXXFLAGS solo afectará a los archivos C++, por lo que puede separar fácilmente la lógica.

+0

Depende de su makefile –

+0

De hecho lo hace. – ismail

Cuestiones relacionadas