Das unterdrücken von Warnungen für 'void*' to 'foo*' - Konvertierungen (reduziert von Fehlern durch -fpermissive)

Ich versuche zu kompilieren von c-code mit g++ (ja, absichtlich). Ich bin immer Fehler wie (zum Beispiel):

error: invalid conversion from 'void*' to 'unsigned char*' [-fpermissive]

hinzufügen -fpermissive der Zusammenstellung Optionen bekommt von mir:

error: invalid conversion from 'void*' to 'unsigned char*' [-Werror=permissive]

das scheint zu sein, ein Fehler, da der -Werror jedoch hinzufügen -Wno-error=permissive -Wno-permissive Ergebnisse in:

error: -Werror=permissive: no option -Wpermissive
error: unrecognized command line option "-Wno-permissive" [-Werror]

Wie kann ich deaktivieren, Warnungen (globaly) für Konvertierungen von void* in andere Zeigertypen?

  • Sie können es beheben, compiler, oder Sie können fixieren Sie Ihre code ein, 1989 war vor langer Zeit. Erhalten Sie vor, indem Sie einen explizit (cast) in Ihrem code.
  • Unterdrückung Fehler nicht machen die Fehler Weg. Es gibt keinen Sinn, zu sagen, die Sie kompilieren wollen C als C++ und dann beschweren, dass Sie keinen gültigen C++. Wenn Sie möchten, um es zu kompilieren als C++, dann wandeln Sie es um gültigen C++, oder kompilieren Sie es als C.
  • (Okay, apparrently stackoverflow verschiebt tags; entfernt c++ für jetzt.) Ich interessiere mich speziell im erzählen g++ (nicht in jeder x-beliebigen c++ - Implementierung), ignorieren diese Warnungen und an das, was die Entsprechung der -Wno-<warning> ist für permissive.
  • Ich bin nicht sicher, dass Sie verstehen, was diese flags tun. -fpermissive Herabstufungen einige Fehler in Warnungen, und -Werror aktualisiert alle Warnungen für Fehler. -Wno-error bewirkt, dass eine Warnung angegeben, die -Werror hat aktualisiert, um einen Fehler herabgestuft werden wieder zu einer Verwarnung. -Wno-error wird nicht für Sie arbeiten hier, weil Sie einen Fehler, um mit zu beginnen, nicht eine Warnung, die aktualisiert wurde zu einem. Wenn Sie wirklich darauf bestehen, dies zu tun, dann verwenden Sie einfach -fpermissive und verwenden Sie nicht -Werror an alle, da es ist verrückt, sich für die letztere, wenn Sie bewusst versuchen, zu kompilieren non-konformen code.
  • tatsächlich, ich verstehe, was diese flags tun. Wenn Sie verstehen, wie Sie tun, und wissen, dass (zum Beispiel) {können Sie nicht ignorieren permissive weil es nicht behandelt, die von der normalen [-Werror=] Mechanismen}, könnte Sie veröffentlichen die Erklärung, die als Antwort so kann ich es akzeptieren? Ein "Nein, das ist nicht möglich, weil diese" Antwort, während die dissapointing, wäre eigentlich eine Antwort, im Gegensatz zu einem "Nein, das ist nicht, was Sie wollen, obwohl Sie versucht, deutlich zu machen, dass das ist genau das, was Sie wollen' nicht-Antwort.
  • Ich fügte hinzu, eine Antwort für Sie.

InformationsquelleAutor David X | 2013-10-06
Schreibe einen Kommentar