Sie können nicht „deaktivieren Warnungen für Konvertierungen von void*
zu anderen Zeigertypen“, weil diese nicht eine Warnung - es ist ein Syntaxfehler.
hier Was passiert ist, dass Sie -fpermissive
verwenden, die einige Fehler Herabstufungen - einschließlich dieser - auf Warnungen, und deshalb können Sie einige nicht-konformen Code (natürlich viele Arten von Syntaxfehler, wie fehlende Klammern kompilieren , kann nicht zu Warnungen herabgestuft werden, da der Compiler nicht wissen kann, wie man sie repariert, um sie in verständlichen Code umzuwandeln).
Dann verwenden Sie auch -Werror
, die alle Warnungen auf Fehler aktualisiert, einschließlich der "Warnungen", dass -fpermissive
Ihren Fehler in hat.
-Wno-error
-Werror
nur zu negieren verwendet wird, das heißt, sie bewirkt, dass -Werror
alle Warnungen als Fehler behandeln, außer die mit -Wno-error
angegebenen Warnungen, die als Warnungen bleiben. Wie das Flag -W
andeutet, arbeiten beide Flags mit Warnungen, so dass sie nichts mit diesem speziellen Problem tun können, denn was Sie hier haben, ist ein Fehler.Es gibt keine "Warnung" für diese Art ungültiger Konvertierung, die Sie mit -Werror
aus- und wieder einschalten können, weil es keine echte Warnung ist - es ist ein Fehler, dass -fpermissive
lediglich dazu dient, als Warnung behandelt zu werden.
können Sie kompilieren Ihre Nicht-comforming Code, in diesem Fall durch die Verwendung -fpermissive
und nicht-Werror
verwenden. Dies wird Sie weiterhin warnen, aber wie bei allen Warnungen wird die erfolgreiche Kompilierung nicht verhindert. Wenn Sie absichtlich versuchen, nichtkonformen Code zu kompilieren, ist die Verwendung von -Werror
nicht sinnvoll, da Sie wissen, dass Ihr Code Fehler enthält und daher zu Warnungen führt, auch wenn -Werror
mit der Aussage "Bitte kompilieren Sie nicht meine nicht konformer Code, obwohl ich dich gerade darum gebeten habe. "
Das weiteste, das Sie gehen können, um g ++ zu bekommen, um Warnungen zu unterdrücken, ist, -fsyntax-only
zu verwenden, das nach Syntaxfehlern und sonst nichts überprüfen wird, aber was Sie hier haben, ist ein Syntaxfehler, der Ihnen und dem Besten nicht hilft Sie können dies in eine Warnung von -fpermissive
umgewandelt haben.
Sie können den Compiler reparieren oder Sie können Ihren Code reparieren, 1989 war vor langer Zeit. Kommen Sie voran, indem Sie einen expliziten (Cast) in Ihren Code schreiben. –
Durch die Unterdrückung von Fehlern werden die Fehler nicht beseitigt. Es hat keinen Sinn zu sagen, dass Sie C als C++ kompilieren wollen und sich dann beschweren, dass Sie kein gültiges C++ haben. Wenn Sie es als C++ kompilieren wollen, dann konvertieren Sie es in gültiges C++, oder kompilieren Sie es als C. –
(Okay, apparrently stackoverflow reorders tags; entfernt 'C++' für jetzt.) Ich bin * specifisch * interessiert an 'g ++' (nicht irgendeine zufällige C++ - Implementierung), um diese Warnungen zu ignorieren und was das Äquivalent von "-Wno-" für "permissive" ist. –