Si ce n'est pas cassé, ne le répare pas
Votre patron a raison de dire cela, cependant, le facteur le plus important est la protection des entrées, des sorties et des débordements de tampon. L'absence de ceux-ci est invariablement le maillon le plus faible de la chaîne de ce point de vue quel que soit le compilateur utilisé.
Cependant, si la base de code est ancienne et que des travaux ont été mis en place pour atténuer les faiblesses du K&R C utilisé, telles que le manque de sécurité de type, les fgets non sécurisés, etc., posez la question "La mise à niveau du compilateur vers un C99 plus moderne / Les normes C11 cassent tout? "
À condition qu'il existe un chemin clair pour migrer vers les nouvelles normes C, ce qui pourrait induire des effets secondaires, il serait peut-être préférable d'essayer un fork de l'ancienne base de code, de l'évaluer et de mettre en place des vérifications de type supplémentaires, des vérifications de cohérence et de déterminer si la mise à niveau vers le nouveau compilateur a un effet sur les ensembles de données d'entrée / sortie.
Ensuite, vous pouvez le montrer à votre patron, " Voici la base de code mise à jour, refactorisée, plus conforme aux normes C99 / C11 acceptées par l'industrie ... ".
C'est le pari sur lequel il faudrait peser, très soigneusement , la résistance au changement pourrait apparaître dans cet environnement et refuser de toucher aux nouveautés.
ÉDITER
Je me suis assis pendant quelques minutes, j'ai réalisé cela, le code généré par K&R pourrait fonctionner sur une plate-forme 16 bits, il y a de fortes chances que la mise à niveau vers un compilateur plus moderne puisse en fait casser la base de code, je pense en termes d'architecture, du code 32 bits serait généré , cela pourrait avoir des effets secondaires amusants sur les structures utilisées pour les ensembles de données d'entrée / sortie, c'est un autre facteur énorme à peser avec soin.
De plus, comme OP a mentionné l'utilisation de Visual Studio 2008 pour créer la base de code, l'utilisation de gcc pourrait induire l'introduction dans l'environnement de MinGW ou de Cygwin, ce qui pourrait avoir un impact sur l'environnement, à moins que la cible soit pour Linux, alors ce serait vaut le détour, peut devoir inclure des commutateurs supplémentaires dans le compilateur pour minimiser le bruit sur l'ancienne base de code K&R, l'autre chose importante est d'effectuer de nombreux tests pour s'assurer qu'aucune fonctionnalité n'est interrompue, cela peut s'avérer un exercice douloureux.