[VC10] Mein Compiler ignoriert mich...
Verfasst: 02.08.2012, 12:48
Also... ich glaube, ich muss es mal offen ansprechen, auch wenn das ja eigentlich ein Thema ist, das man in der Familie hinter verschlossenen Türen bespricht. Mein Compiler... ne, so kann ich nicht anfangen. Schon seit langem... ne, so auch nicht. Ach verdammt, ich sprech es jetzt einfach offen aus: mein Compiler ignoriert mich. So, nun ist es raus.
Es fing mal harmlos an: ich konvertierte ein paar Projekte von VC9 zu VC10. Mein Zwillingsbruder hatte früher mal in großen Engagement das Warnlevel für die Splitterwelten auf Anschlag gezogen - inklusive Dependencies sind wir da ja immerhin bei >2 Millionen Zeilen Code. Und wir ertranken in Warnungen. Manches davon war in der Tat ein guter Hinweis, anderes haben wir dann selektiv per "Disable Warning" mundtot gemacht. Gut. Nur leider ändern sich manche Warnungsnummern mit dem Versionswechsel.
Ich habe inzwischen das Warnungslevel wieder zurückgedreht. Bei allen beteiligten Projekten. Ich habe ein Property Sheet, dass für alle Projekte die Pfade aufsetzt. Darin stehen jetzt auch ein paar deaktivierte Warnungen für besonders hartnäckige Kandidaten und ein paar Defs wie _SECURE_SCL=0, die ich für nötig hielt. Aber der Compiler ignoriert diese Vorschriften. Das Property Sheet ist in jedem Projekt aufgenommen, sonst würde mangels Include-Pfaden ja nix mehr kompilieren. Aber sowohl die Disable Warnings-Direktive wird ignoriert als auch meine Defines. Ich finde mich im Debugger, wenn ich in was Langem mal testweise unterbreche, immer wieder in irgendwelchen Iterator-Checks wieder.
In der resultierenden Befehlszeile des Compilers stehen sowohl die DisableWarnings als auch die Präprozessor-Defines mit drin. Nur wirken tun sie nix. Hat jemand eine Idee, wie ich dem beikommen könnte? Volltextsuche, ob irgendwer per #pragma die Warnungen wieder aktiviert, hat auch nix erbracht. Selbst eine Suche nach Dateiinhalt nach "4350" durch das ganze Verzeichnis erbrachte nur ein paar False Positives in Binärdateien und natürlich die Deaktivierung selbst.
Die Warnung "4350" ist z.B. ein prima Kandidat: sie warnt, dass das Verhalten des Compilers in früheren Versionen an der Stelle falsch war und der Compiler jetzt das Richtige tut. Ich kann meiner Dankbarkeit ob dieser Tatsache leider nicht den nötigen Ausdruck verleihen, weil mir boost::signal die Ausgabe mit diesen Warnungen wortwörtlich flutet! Und ich krieg diese Warnungen nicht tot.
Es fing mal harmlos an: ich konvertierte ein paar Projekte von VC9 zu VC10. Mein Zwillingsbruder hatte früher mal in großen Engagement das Warnlevel für die Splitterwelten auf Anschlag gezogen - inklusive Dependencies sind wir da ja immerhin bei >2 Millionen Zeilen Code. Und wir ertranken in Warnungen. Manches davon war in der Tat ein guter Hinweis, anderes haben wir dann selektiv per "Disable Warning" mundtot gemacht. Gut. Nur leider ändern sich manche Warnungsnummern mit dem Versionswechsel.
Ich habe inzwischen das Warnungslevel wieder zurückgedreht. Bei allen beteiligten Projekten. Ich habe ein Property Sheet, dass für alle Projekte die Pfade aufsetzt. Darin stehen jetzt auch ein paar deaktivierte Warnungen für besonders hartnäckige Kandidaten und ein paar Defs wie _SECURE_SCL=0, die ich für nötig hielt. Aber der Compiler ignoriert diese Vorschriften. Das Property Sheet ist in jedem Projekt aufgenommen, sonst würde mangels Include-Pfaden ja nix mehr kompilieren. Aber sowohl die Disable Warnings-Direktive wird ignoriert als auch meine Defines. Ich finde mich im Debugger, wenn ich in was Langem mal testweise unterbreche, immer wieder in irgendwelchen Iterator-Checks wieder.
In der resultierenden Befehlszeile des Compilers stehen sowohl die DisableWarnings als auch die Präprozessor-Defines mit drin. Nur wirken tun sie nix. Hat jemand eine Idee, wie ich dem beikommen könnte? Volltextsuche, ob irgendwer per #pragma die Warnungen wieder aktiviert, hat auch nix erbracht. Selbst eine Suche nach Dateiinhalt nach "4350" durch das ganze Verzeichnis erbrachte nur ein paar False Positives in Binärdateien und natürlich die Deaktivierung selbst.
Die Warnung "4350" ist z.B. ein prima Kandidat: sie warnt, dass das Verhalten des Compilers in früheren Versionen an der Stelle falsch war und der Compiler jetzt das Richtige tut. Ich kann meiner Dankbarkeit ob dieser Tatsache leider nicht den nötigen Ausdruck verleihen, weil mir boost::signal die Ausgabe mit diesen Warnungen wortwörtlich flutet! Und ich krieg diese Warnungen nicht tot.