Pregunta

Por lo general les gusta tener un montón de advertencias habilitados durante la programación. Sin embargo, algunas bibliotecas contiene código que provoca fácilmente advertencias (.., pitón, Qt, ..). Al compilar con gcc que sólo puede utilizar en lugar de -isystem -I para silenciar a eso. ¿Cómo puedo hacer lo mismo con el compilador de MS? Sé de la #pragma advertencia, pero me gustaría una solución que no implique el código específico del compilador por todo el lugar. También sé que puedo desactivar advertencias específicas, pero eso no es lo que quiero tampoco.

Por cierto: isystem debe ser una etiqueta de esta pregunta, pero no se le permitió hacer eso ..

Resumen:. Quiero ver todos las advertencias de mi código, y no advertencias de código externo

¿Fue útil?

Solución

A partir del 08/17/2017 esto todavía parece imposible.

He añadido una de estas solicitudes aquí:

https: // developercommunity.visualstudio.com/content/problem/96411/impossible-to-ignore-warnings-from-system-librarie.html

Actualización 2018:

La cuestión está ahora cerrado como fijo y está disponible en la instalación estándar MS VS [ ]. Una entrada de blog del equipo de MS pasa a través de las nuevas características [ aquí ].

La solución de MS es flexible. No sólo se puede diferenciar mediante rutas como se hace con --isystem, pero por ejemplo también en función de si se utiliza o #include "" #include <>. La entrada del blog es digno de una lectura para ver todos los diferentes puntos de personalización.

Finalmente advertencias son utilizables para mí también en la plataforma MS VS.

Otros consejos

Esto ahora existe bajo /experimental:external /external:I system_include_path /external:W0. Ver https://blogs.msdn.microsoft. com / vcblog / 2017/12/13 / roto las advertencias de la teoría / para muchos más detalles.

No, MSVC no tiene un equivalente -isystem.


vistazo a la salida de la salida de CL /? :

  

/ wd advertencia desactivar n

     

/ n en que tratamos de advertencia como un error

     

/ sin advertencia tema n una vez

     

/ w nivel de advertencia conjunto 1-4 para n

Tenga en cuenta que esto desactiva las advertencias para todo el proyecto; Recuerdo cuando se usa Qt prefiero cambiar su cabecera principal con el desactivar la advertencia pragma y permitir de nuevo al final, así que todavía podía ver todas las advertencias para mi propia fuente.

Editar el autor editado su pregunta, la respuesta actualizada: no hay manera de obtener su código con advertencias y código Qt sin advertencias utilizando parámetros del compilador: ¿cómo se va a indicar al compilador lo que es " su' código?

Recuerde que las marcas anteriores pueden aplicarse a nivel de archivo, así que esto permitirá desactivar las advertencias de sólo los archivos en el que se incluyen las cabeceras de Qt, pero que Todavía significa que no puede verlos por su propio código en el que los archivos.

Así que me quedo con la respuesta anterior; no es muy bonita, pero estoy bastante seguro de que es la única manera: #pragma usar al principio y al final de la cabecera (s) Qt. O bien cambiar los encabezados de Qt (aún más feo), o elegir una forma menos invasiva de esta manera:

//your source/header file
#include "shutuppqt.h"
#include <QString>
#include "enableallwarnings.h"

ejemplo "shutuppqt.h"

#ifdef MSVC
  #pragma warning ( disable : 4222 ) //or whatever warning Qt emits
#else
  //....
#endif

ejemplo "enableallwarnings.h"

#ifdef MSVC
  #pragma warning ( enable : 4222 ) //or default instead of enable
#else
  //....
#endif
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top