Contratos para C: Una Prueba de Concepto

2025-09-09
Contratos para C: Una Prueba de Concepto

Este artículo explora la posibilidad de llevar el concepto de contratos de C++ al lenguaje C. El autor propone una solución utilizando las macros `contract_assert` y `contract_assume` para las comprobaciones de precondición y postcondición, respectivamente. La macro `defer` y la macro `unreachable` de C23 simplifican la expresión de las postcondiciones. El artículo demuestra cómo las funciones inline y las funciones auxiliares pueden agregar comprobaciones de contrato sin alterar las implementaciones principales de las funciones, aprovechando las optimizaciones del compilador. Si bien aún es necesario refinar la especificación de la interfaz, este artículo proporciona una prueba de concepto viable para contratos en C.

Desarrollo