Jeśli się nie zepsuł, nie naprawiaj tego
Twój szef ma rację, mówiąc to, jednak ważniejszym czynnikiem jest ochrona wejść, wyjść, przepełnienia bufora. Ich brak jest niezmiennie najsłabszym ogniwem w łańcuchu z tego punktu widzenia, niezależnie od używanego kompilatora.
Jeśli jednak baza kodu jest stara i podjęto prace mające na celu złagodzenie słabych punktów używanego K&R C, takich jak brak bezpieczeństwa typów, niezabezpieczone elementy itp., Rozważ pytanie „ Czy uaktualnienie kompilatora do nowocześniejszego C99 / C11 wszystko psują? ”
Zakładając, że istnieje jasna ścieżka migracji do nowszych standardów C, co może wywołać efekty uboczne, najlepiej będzie spróbować rozwidlić stary kod, ocenić go i wprowadzić dodatkowe kontrole typu, testy poprawności i określić, czy aktualizacja do nowszy kompilator ma jakikolwiek wpływ na zbiory danych wejściowych / wyjściowych.
Następnie możesz pokazać go swojemu szefowi: „ Oto zaktualizowana baza kodu, refaktoryzowana, bardziej zgodna z przyjętymi w branży standardami C99 / C11… ”.
To jest ryzyko, które należałoby rozważyć, bardzo ostrożnie , opór przed zmianą mógłby pojawić się w tym środowisku i może odmówić dotknięcia nowszych rzeczy.
EDYTOWAĆ
Po prostu usiadłem na kilka minut i zdałem sobie sprawę, że kod wygenerowany przez K&R może działać na platformie 16-bitowej, są szanse, że aktualizacja do nowocześniejszego kompilatora może faktycznie złamać bazę kodu, myślę w kategoriach architektury, wygenerowany zostanie kod 32-bitowy , może to mieć zabawne skutki uboczne dla struktur używanych w zestawach danych wejściowych / wyjściowych, to kolejny ważny czynnik, który należy dokładnie rozważyć.
Ponadto, ponieważ OP wspomniał o używaniu Visual Studio 2008 do budowania bazy kodu, użycie gcc może spowodować wprowadzenie do środowiska MinGW lub Cygwin, co może mieć wpływ na środowisko, chyba że celem jest Linux, wtedy byłoby to warto spróbować, być może trzeba będzie dołączyć dodatkowe przełączniki do kompilatora, aby zminimalizować szum na starej bazie kodu K&R, inną ważną rzeczą jest przeprowadzenie wielu testów, aby upewnić się, że żadna funkcjonalność nie zostanie zepsuta, może okazać się bolesnym ćwiczeniem.