Supondo que eu precise usar C (sem C ++ ou compiladores orientados a objeto) e não possua alocação dinâmica de memória, quais são algumas técnicas que posso usar para implementar uma classe ou uma boa aproximação de uma classe? É sempre uma boa idéia isolar a "classe" em um arquivo separado? Suponha que possamos pré-alocar a memória assumindo um número fixo de instâncias, ou mesmo definindo a referência a cada objeto como uma constante antes do tempo de compilação. Sinta-se livre para fazer suposições sobre qual conceito de POO eu precisarei implementar (ele variará) e sugerir o melhor método para cada um.
Restrições:
- Eu tenho que usar C e não um OOP porque estou escrevendo o código para um sistema incorporado, e o compilador e a base de código preexistente estão em C.
- Não há alocação dinâmica de memória porque não temos memória suficiente para supor razoavelmente que não ficaremos sem se começarmos a alocá-la dinamicamente.
- Os compiladores com os quais trabalhamos não têm problemas com ponteiros de função
apr_
GLib e os prefixos g_
para criar um namespace) e outros fatores organizadores sem OOP. Se você estiver reestruturando o aplicativo, considere gastar algum tempo tentando criar uma estrutura processual mais sustentável.