Wenn es nicht kaputt ist, reparieren Sie es nicht
Ihr Chef klingt richtig, wenn er dies sagt. Der wichtigere Faktor ist jedoch die Sicherung von Ein- und Ausgängen sowie Pufferüberläufen. Das Fehlen dieser ist aus dieser Sicht immer das schwächste Glied in der Kette, unabhängig vom verwendeten Compiler.
Wenn die Codebasis jedoch uralt ist und Anstrengungen unternommen wurden, um die Schwächen des verwendeten K & R C zu verringern, wie z. B. mangelnde Typensicherheit, unsichere Geräte usw., wird die Frage abgewogen, ob der Compiler auf ein moderneres C99 aktualisiert werden soll / C11-Standards brechen alles? "
Vorausgesetzt, dass es einen klaren Weg für die Migration zu den neueren C-Standards gibt, der Nebenwirkungen hervorrufen kann, ist es möglicherweise am besten, eine Abzweigung der alten Codebasis zu versuchen, diese zu bewerten und zusätzliche Typprüfungen und Sanitätsprüfungen durchzuführen und festzustellen, ob ein Upgrade auf durchgeführt wird Der neuere Compiler hat Auswirkungen auf Eingabe- / Ausgabedatensätze.
Dann können Sie es Ihrem Chef zeigen: " Hier ist die aktualisierte Codebasis, überarbeitet, mehr im Einklang mit den branchenüblichen C99 / C11-Standards ... ".
Das ist das Glücksspiel , das auf abgewogen werden müssten, sehr sorgfältig , resistence Änderungen in dieser Umgebung kann es zeigen und sich weigern , kann die neueren Sachen zu berühren.
BEARBEITEN
Ich habe mich nur ein paar Minuten zurückgelehnt und festgestellt, dass K & R generierter Code auf einer 16-Bit-Plattform ausgeführt werden kann. Die Wahrscheinlichkeit besteht, dass ein Upgrade auf einen moderneren Compiler tatsächlich die Codebasis sprengt. Ich denke in Bezug auf die Architektur, dass 32-Bit-Code generiert wird Dies könnte lustige Nebenwirkungen auf die Strukturen haben, die für Eingabe- / Ausgabedatensätze verwendet werden. Dies ist ein weiterer wichtiger Faktor, der sorgfältig abgewogen werden muss.
Da OP die Verwendung von Visual Studio 2008 zum Erstellen der Codebasis erwähnt hat, kann die Verwendung von gcc dazu führen, dass entweder MinGW oder Cygwin in die Umgebung gebracht werden, was sich auf die Umgebung auswirken kann, es sei denn, das Ziel ist Linux einen Versuch wert, muss möglicherweise zusätzliche Schalter zum Compiler enthalten, um das Rauschen auf der alten K & R-Codebasis zu minimieren. Die andere wichtige Sache ist, viele Tests durchzuführen, um sicherzustellen, dass keine Funktionalität beeinträchtigt wird. Dies kann sich als schmerzhafte Übung herausstellen.