Die Hemmung der incompatible pointer type specific warning unter GCC

In meinem code unter GCC bekomme ich ziemlich viele Warnungen von diesen zwei Arten.

warning: passing argument 1 of 'foo' from incompatible pointer type

und

warning: assignment from incompatible pointer type

Ich weiß, dass normalerweise diese beiden sind ernste Warnungen, die anzeigen, dass etwas wirklich falsch im code. In meinem Fall aber, wo diese passiert sind, ich weiß sehr gut, was ich Tue, und ich weiß, ich kann ignorieren diese Warnungen. (Und ja, ich bin sicher, es)

Aber jetzt ist mein code hat soweit gewachsen, dass diese Warnungen überschatten alles andere, in der Wirkung ausblenden Potenzial Warnungen, die dazu führen könnten, dass Sie mich auf einen bösen Fehler. So beschloss ich, zu hemmen. Bald merkte ich, dass ich nicht weiß, wie. Meine gcc version 4.4.1 und ich weiß, dass ich kann verwenden:

#pragma GCC diagnostic ignore "-Wname" 

ignorieren jede Warnung, die ich will. Aber aus der nur große und umfassende Liste von GCC Warnungen, die ich gefunden, ich kann nicht scheinen, um herauszufinden, welche dieser beiden sind. Ich kam zu dem Punkt der Kommissionierung Sie eins nach dem anderen und verwandelt Sie in Fehler zu erkennen, wenn das kompilieren aufhören würde aufgrund der incompatible pointer type, aber ohne Erfolg, wie unten.

#pragma GCC diagnostic error "-Wimplicit-int"   
#pragma GCC diagnostic error "-Waddress"
#pragma GCC diagnostic error "-Wreturn-type"
           .... //e.t.c.

So.. die Frage ist, weiß jemand den Namen von diesen Warnungen, so dass ich kann tatsächlich hemmen Sie?

BEARBEITEN

Aufgrund der Diskussion in den Kommentaren, die ich zu klären haben, ein Missverständnis, dass ich hatte, die dazu führen mich zu glauben, ich hatte zu hemmen, die Warnungen. Ich dachte, dass es einige Kosten (egal wie winzig) beteiligt explizite casts zwischen Pointer auf Strukturen.

So mein denken, was ich jetzt merkte war fehlerhaft, war, dass da mein Programm arbeitet und arbeitet seit langer Zeit unter verschiedenen Plattformen, warum sollten Sie arbeiten, um nur erfüllen compiler?

Nun, ich erkannte jetzt, und Schreibe es hier, falls jemand stolpert über dieses Thema und hat die gleiche Linie des Denkens. Es gibt keine Kosten, die mit der Durchführung der explizite Typisierung von Zeigern und die Vorteile sind:

  • Der compiler hält nörgeln Sie mit den Warnungen
  • Andere Menschen können wissen, dass Sie haben die-cast absichtlich und hat nicht die Fehler machen,

Also hier ist es für alle Personen, die möglicherweise die gleiche Frage stellen.

  • Immer beachten Sie die Warnungen - Sie sind es für einen Grund. Es ist eine sehr sehr gute Idee zum kompilieren mit -Wall - flag gesetzt ist - und dann gehen Sie zum beheben von Warnungen.
  • Aus Neugier, und in keiner Weise versucht, Zweifel an Ihrer Genie, könnte ich Fragen, was dieser code ist, dass die Ursache der Warnung?
  • Ich Stimme mit Ihnen überein, und das ist, warum ich wollen, deaktivieren Sie diese zwei, weil in meinem code sind Sie nicht mir zu helfen, stattdessen werden Sie überschatten die anderen Warnungen, die hilfreich sein könnten. Was ich brauche, um zu beheben, wird der compiler die Hemmung meiner Arbeit, anstatt wirklich zu helfen, mich mit ihm.Ich habe meine Gründe für den Gang zu ignorieren, diese spezifische Warnhinweise. Die Frage ist, wie es zu tun, so dass ich den Fokus auf die "echten" Warnungen
  • GCC 4.6 schmückt jede Warnung mit dem speziellen flag, das verwendet wird, um auslösen oder unterdrücken es.
  • Verwenden grep vielleicht?
  • vielen Dank für diese info. Zeit, um ein upgrade auf 4.6 dann

InformationsquelleAutor Lefteris | 2012-02-25
Schreibe einen Kommentar