Cómo suprimir las advertencias específicas en g++

Quiero suprimir las advertencias específicas de g++. Soy consciente de la -Wno-XXX bandera, pero estoy buscando algo más específico. Quiero algunos de las advertencias de -Weffc++, pero no todos de ellos. Algo parecido a lo que se puede hacer con pelusa – deshabilitar mensajes específicos.

Hay una construida en forma de gcc para hacer esto? ¿Tengo que escribir un guión envoltorio?

  • Consulte esta respuesta si desea deshabilitar las advertencias para el n líneas de código.
  • En caso de que usted está wiliiing agregar el archivo de código fuente(s) puede hacer lo siguiente, como se describe aquí (y probablemente en otras respuestas): codeyarns.com/2014/03/11/…
InformationsquelleAutor Gilad Naor | 2009-01-28

4 Kommentare

  1. 20

    Por desgracia, esta característica no está previsto por g++. En VC++, puede utilizar #pragma advertencia para deshabilitar algunas advertencias específicas. En el gcc, el más cercano que puede tener es diagnóstico pragmas, que permite habilitar/deshabilitar ciertos tipos de diagnósticos de determinados archivos o proyectos.

  2. 11

    Para algunas advertencias, hay un modificador de línea de comandos para deshabilitar ellos. Para saber que pasar a utilizar, de paso fdiagnostics-mostrar opción-a gcc.

    • La opción de línea de comandos para obtener el nombre de la advertencia es útil.
  3. 2

    Sólo podría utilizar grep -v en la salida.

    Dependiendo de la advertencia de que usted desea deshabilitar, a veces se puede corregir en el código. E. g.:

    int main()
    {
      int i;
    }

    Genera: foo.cc:4: advertencia: no utilizada en la variable ‘i’

    Mientras que esto no:

    #define MARKUSED(X)  ((void)(&(X)))
    
    int main()
    {
      int i;
      MARKUSED(i);
    }
    • GCC tiene también la palabra clave extensión deseo de suprimir las advertencias de la siguiente instrucción.
    • Rodean a una sección de código, por ejemplo, #pragma GCC diagnostic ignored "-Wfloat-equal" y #pragma GCC diagnostic pop
  4. 2

    tubería de error estándar a un filtro que elimina las cosas que no quieres ver. Por ejemplo, este es mi archivo:

    principal.o: main.cpp
    g++ -c -Pared main.cpp 2>&1 | grep -v Wunused-variable

    • Parece ser más complejo como una advertencia de ajuste de múltiples líneas (es decir, cuando contiene fragmentos de código).

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea