Contrats pour C : une preuve de concept

Cet article explore la possibilité d'introduire le concept de contrats de C++ dans le langage C. L'auteur propose une solution utilisant les macros `contract_assert` et `contract_assume` pour les vérifications de précondition et de postcondition, respectivement. La macro `defer` et la macro `unreachable` de C23 simplifient l'expression des postconditions. L'article montre comment les fonctions inline et les fonctions auxiliaires peuvent ajouter des vérifications de contrat sans modifier les implémentations principales des fonctions, en tirant parti des optimisations du compilateur. Bien qu'un raffinement de la spécification de l'interface soit encore nécessaire, cet article fournit une preuve de concept viable pour les contrats en C.