C ist bekanntlich eine eher einfache Sprache, wenn es um HLLs geht. C ++ scheint zwar eine wesentlich höhere Sprache als C zu sein, weist jedoch einige seiner Merkmale auf. Und eines dieser Merkmale ist, dass die Sprachen von Programmierern für Programmierer entwickelt wurden - und insbesondere von Programmierern, die wussten, was sie taten.
[Für den Rest dieser Antwort werde ich mich auf C konzentrieren. Das meiste, was ich sagen werde, gilt auch für C ++, wenn auch vielleicht nicht so stark. Obwohl, wie Bjarne Stroustrup berühmt gesagt hat: "C macht es einfach, sich in den Fuß zu schießen; C ++ macht es schwieriger, aber wenn Sie es tun, bläst es Ihr ganzes Bein ab." ]]
Wenn Sie wissen, was Sie tun - wirklich wissen, was Sie tun - müssen Sie manchmal "die Regeln brechen". Aber die meiste Zeit werden die meisten von uns zustimmen, dass gut gemeinte Regeln uns alle aus Ärger heraushalten und dass es eine schlechte Idee ist, diese Regeln ständig zu brechen.
Aber in C und C ++ gibt es überraschend viele Dinge, die Sie tun können, die "schlechte Ideen" sind, die aber formal nicht "gegen die Regeln" sind. Manchmal sind sie manchmal eine schlechte Idee (aber manchmal können sie verteidigt werden); Manchmal sind sie fast immer eine schlechte Idee. Aber die Tradition war immer, nicht vor diesen Dingen zu warnen - denn wiederum wird davon ausgegangen, dass Programmierer wissen, was sie tun, sie würden diese Dinge nicht ohne guten Grund tun, sie würden sich über einen Haufen ärgern von unnötigen Warnungen.
Aber natürlich wissen nicht alle Programmierer wirklich , was sie tun. Insbesondere durchläuft jeder C-Programmierer (egal wie erfahren) eine Phase, in der er ein beginnender C-Programmierer ist. Und selbst erfahrene C-Programmierer können nachlässig werden und Fehler machen.
Schließlich hat die Erfahrung nicht nur gezeigt, dass Programmierer Fehler machen, sondern dass diese Fehler echte, schwerwiegende Folgen haben können. Wenn Sie einen Fehler machen und der Compiler Sie nicht davor warnt und das Programm nicht sofort abstürzt oder etwas offensichtlich Falsches tut, kann der Fehler dort lauern, manchmal jahrelang versteckt, bis er verursacht ein wirklich großes Problem.
Es stellt sich also heraus, dass Warnungen meistens eine gute Idee sind. Sogar die erfahrenen Programmierer haben gelernt (tatsächlich haben " besonders die erfahrenen Programmierer gelernt"), dass die Warnungen insgesamt mehr Gutes als Schaden anrichten. Für jedes Mal, wenn Sie absichtlich etwas falsch gemacht haben und die Warnung ein Ärgernis war, haben Sie wahrscheinlich mindestens zehn Mal versehentlich etwas falsch gemacht, und die Warnung hat Sie vor weiteren Problemen bewahrt. Und die meisten Warnungen können für die wenigen Male deaktiviert oder umgangen werden, wenn Sie wirklich das "Falsche" tun möchten.
(Ein klassisches Beispiel für eine solche „Fehler“ ist der Test Die if(a = b)
meiste Zeit, ist dies ein Fehler ist, so dass die meisten Compiler in diesen Tagen darüber warnen -.. Einige sogar standardmäßig Aber wenn Sie wirklich sowohl assign wollte b
zu a
und Test Im Ergebnis können Sie die Warnung durch Eingabe deaktivieren if((a = b))
.)
Die zweite Frage ist, warum Sie den Compiler bitten möchten, Warnungen als Fehler zu behandeln. Ich würde sagen, es liegt an der menschlichen Natur, insbesondere an der allzu einfachen Reaktion, zu sagen: "Oh, das ist nur eine Warnung, das ist nicht so wichtig, ich werde das später aufräumen." Aber wenn Sie ein Zauderer sind (und ich weiß nichts über Sie, aber ich bin ein schrecklicher Zauderer), ist es einfach, die notwendige Bereinigung für immer zu verschieben - und wenn Sie es sich zur Gewohnheit machen, Warnungen zu ignorieren, dann Es wird immer einfacher, eine wichtige Warnmeldung zu übersehen , die unbemerkt inmitten all derer liegt, die Sie ignorieren.
Den Compiler zu bitten, Warnungen als Fehler zu behandeln, ist ein kleiner Trick, den Sie selbst spielen können, um diese menschliche Schwäche zu umgehen.
Persönlich bestehe ich nicht so darauf, Warnungen als Fehler zu behandeln. (In der Tat, wenn ich ehrlich bin, kann ich sagen, dass ich diese Option in meiner "persönlichen" Programmierung praktisch nie aktiviere.) Aber Sie können sicher sein, dass ich diese Option bei der Arbeit aktiviert habe, wo unser Styleguide (den ich schrieb) beauftragt seine Verwendung. Und ich würde sagen - ich vermute, die meisten professionellen Programmierer würden sagen -, dass jeder Shop, der Warnungen nicht als Fehler in C behandelt, sich verantwortungslos verhält und sich nicht an allgemein anerkannte Best Practices der Branche hält.