Frage

Ich mag in der Regel eine Menge Warnungen aktiviert, wenn die Programmierung. Allerdings sind einige Bibliotheken enthält Code, der leicht verursacht Warnungen (.., Python, Qt, ..). Wenn mit gcc kompilieren kann ich -isystem nur statt -I, dass zum Schweigen zu bringen. Wie kann ich mit dem MS-Compiler das gleiche tun? Ich kenne die Warnung von Pragma, aber ich würde eine Lösung wie die nicht-Compiler spezifischen Code der ganzen Ort beinhalten wird. Ich weiß auch, dass ich bestimmte Warnungen ausschalten kann, aber das ist nicht das, was ich will auch nicht.

BTW: isystem sollte ein Tag dieser Frage, aber ich war das nicht ..

zu tun erlaubt

Zusammenfassung: Ich mag sehen, alle Warnungen von meinem Code, und nicht Warnungen von externem Code

.
War es hilfreich?

Lösung

Ab 2017.08.17 noch das scheint unmöglich.

Ich habe eine Feature-Anfrage hier:

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

Update 2018:

Die Frage ist nun als fest geschlossen und in der Standard-MS VS Installation zur Verfügung steht [ Quelle ]. Eine Blog-Post von dem MS-Team geht durch die neuen Features [ hier ].

Die Lösung von MS ist flexibel. Sie können nicht nur Pfade mit unterscheiden, wie Sie mit --isystem tun, aber zum Beispiel auch davon ab, ob Sie #include "" oder #include <> verwenden. Der Blog-Beitrag lohnt sich ein alle die verschiedenen Anpassungspunkte zu sehen, zu lesen.

Schließlich sind Warnungen verwendbar für mich auch auf der MS VS-Plattform.

Andere Tipps

Diese besteht nun unter /experimental:external /external:I system_include_path /external:W0. Siehe https://blogs.msdn.microsoft. com / vcblog / 2017/12/13 / broken-Warnungen-Theorie / für viele weitere Details.

Nein, MSVC keine -isystem Äquivalent haben.


Blick auf die Ausgabe Ausgabe von cl /? :

  

/ wd deaktivieren Warnung n

     

/ Wir behandeln Warnung n als Fehler

     

/ wo Ausgabe Warnung n einmal

     

/ w Satz Warnstufe 1-4 für n

Beachten Sie, dass dies die Warnungen für das gesamte Projekt deaktiviert; Ich erinnere mich, als ich Qt verwenden würde eher ändern Sie es Haupt-Header mit dem Pragma ist Warnung abzuschalten und am Ende wieder aktivieren, damit ich noch alle Warnungen für meine eigene Quelle sehen konnte.

Bearbeiten der Autor bearbeitet seine Frage, aktualisiert Antwort: Es gibt keine Möglichkeit, Ihren Code mit Warnungen und Qt-Code zu erhalten, ohne Warnungen Compiler-Flags verwenden: wie wollen Sie den Compiler sagen, was ' Ihr‘Code?

Beachten Sie, dass die oben genannten Flags können als auch auf Dateiebene angewandt werden, so würde dies ermöglicht es Ihnen, die Warnungen zu deaktivieren nur für die Dateien, in denen Sie Qt-Header enthalten, aber das noch bedeutet, dass Sie nicht sehen, wie sie für Ihren eigenen Code in dem Datei.

Also bleibe ich mit der Antwort oben; es ist nicht ganz hübsch, aber ich bin ich ziemlich sicher, dass es der einzige Weg: Verwendung von Pragma am Anfang und das Ende des Qt-Header (s). Entweder die Qt-Header ändern (noch hässlich), oder wählen Sie eine weniger invasive Art und Weise wie folgt aus:

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

Beispiel "shutuppqt.h"

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

Beispiel "enableallwarnings.h"

#ifdef MSVC
  #pragma warning ( enable : 4222 ) //or default instead of enable
#else
  //....
#endif
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top