2010-07-08 9 views
6

Ich kompiliere gerne meinen Code mit -Wall, und manchmal sogar -pedantisch. Es ist teilweise eine Stilsache und teilweise die Tatsache, dass es gelegentlich sehr, sehr nützliche Warnungen ausgibt (wie zum Beispiel = anstatt ==).Gibt es eine Möglichkeit, dass g ++ nur Warnungen zu meinen Dateien ausgeben kann?

Allerdings sind die Autoren einiger meiner Header eindeutig nicht so sticker. Die Kompilierung mit einer der beiden Warnstufen führt zu einem enormen Durcheinander an Ausgaben, wodurch der Zweck der Kompilierung völlig zunichte gemacht wird.

Wie kann ich meinen Compiler diese Warnungen ignorieren lassen?

+7

Sie schlagen diese Deppen über den Kopf mit einem Schläger, bis sie alle beheben Warnungen in den Headern, dann immer '-Wall -Wextra -pedantisch'. –

+0

@NikolaiNFetisov Sie müssen auch '-Werror' verwenden, damit sie nicht kompilieren können, wenn es eine Warnung gibt. Das bedeutet, dass sie den Code nicht einmal mit einer einzigen Warnung teilen sollten ... –

Antwort

8

Alternativ zu JS Bangs' answer, können Sie haben GCC sie als system headers behandeln, die alle Warnungen deaktiviert (ausgenommen #warning Richtlinien) für die Überschriften.

Wenn die -isystem Schalter nicht hilfreich sind, können Sie alle der beanstandeten Header mit einfachen Header wickeln, die nur die entsprechende Zeile enthalten:

#pragma GCC system_header 
1

Verwenden Sie eine geeignete #pragma, um Warnungen zu deaktivieren, bevor Sie die fehlerhaften Header einbeziehen, und aktivieren Sie die Warnungen anschließend erneut. Docs on the GCC pragmas.

0

Es scheint, als ob sie "Ihre" Header sind, was bedeutet, dass Sie sie selbst modifizieren können oder lassen Sie die "Writer" es für Sie tun. Wenn Sie ein warnendes freies Leben verfolgen möchten, lassen Sie diese Überschriften reparieren :).

Alternativ können Sie natürlich nutzen Pragma ist, aber sie sind anti-Stil und hässlich :)

7

Wenn GCC Aufruf mit -isystem statt -I die Pfade zu problematischen Header zu geben, sollten Warnungen für diesen Header verstummen zu lassen. Siehe GCC docs oder this SO question.

+0

Danke! Das hat mein Problem behoben. – Salgat

Verwandte Themen