Contratos para C: Uma Prova de Conceito

2025-09-09
Contratos para C: Uma Prova de Conceito

Este artigo explora a possibilidade de trazer o conceito de contratos do C++ para a linguagem C. O autor propõe uma solução usando macros `contract_assert` e `contract_assume` para verificações de pré-condição e pós-condição, respectivamente. A macro `defer` e a macro `unreachable` do C23 simplificam a expressão de pós-condições. O artigo demonstra como funções inline e funções auxiliares podem adicionar verificações de contrato sem alterar as implementações principais das funções, aproveitando otimizações do compilador. Embora seja necessário refinar ainda mais a especificação da interface, este artigo fornece uma prova de conceito viável para contratos em C.

Desenvolvimento Contratos