Se não estiver quebrado, não conserte
Seu chefe parece certo ao dizer isso, no entanto, o fator mais importante é a proteção de entradas, saídas e estouros de buffer. A falta deles é invariavelmente o elo mais fraco da cadeia desse ponto de vista, independentemente do compilador usado.
No entanto, se a base de código for antiga e foram criados trabalhos para mitigar os pontos fracos do K&R C usado, como falta de segurança de tipo, recursos inseguros, etc., avalie a questão " Atualizando o compilador para um C99 mais moderno / Padrões C11 quebram tudo? "
Desde que haja um caminho claro para migrar para os padrões C mais recentes, o que pode induzir efeitos colaterais, pode ser melhor tentar uma bifurcação da antiga base de código, avaliá-la e colocar verificações de tipo extras, verificações de sanidade e determinar se está atualizando para o compilador mais recente tem algum efeito nos conjuntos de dados de entrada / saída.
Em seguida, você pode mostrá-lo ao seu chefe: " Aqui está a base de código atualizada, refatorada, mais alinhada com os padrões C99 / C11 aceitos pelo setor ... ".
Essa é a aposta que teria que ser ponderada com muito cuidado , a resistência à mudança pode aparecer lá naquele ambiente e pode se recusar a tocar nas coisas mais recentes.
EDITAR
Apenas relaxei por alguns minutos, percebi isso, o código gerado pela K&R poderia estar sendo executado em uma plataforma de 16 bits, é provável que a atualização para um compilador mais moderno pudesse realmente quebrar a base de código, estou pensando em termos de arquitetura, o código de 32 bits seria gerado , isso pode ter efeitos colaterais engraçados nas estruturas usadas para conjuntos de dados de entrada / saída, que é outro grande fator a ser ponderado com cuidado.
Além disso, como o OP mencionou o uso do Visual Studio 2008 para criar a base de código, o uso do gcc poderia induzir a introdução no ambiente do MinGW ou Cygwin, que poderia causar uma mudança de impacto no ambiente, a menos que o alvo seja o Linux, seria vale a pena tentar, pode ser necessário incluir opções adicionais no compilador para minimizar o ruído na antiga base de códigos K&R; a outra coisa importante é realizar muitos testes para garantir que nenhuma funcionalidade seja quebrada; pode ser um exercício doloroso.