Suponiendo que tengo que usar C (no C ++ ni compiladores orientados a objetos) y no tengo una asignación de memoria dinámica, ¿cuáles son algunas técnicas que puedo usar para implementar una clase o una buena aproximación de una clase? ¿Es siempre una buena idea aislar la "clase" en un archivo separado? Suponga que podemos preasignar la memoria asumiendo un número fijo de instancias, o incluso definiendo la referencia a cada objeto como una constante antes del tiempo de compilación. Siéntase libre de hacer suposiciones sobre qué concepto de OOP necesitaré implementar (variará) y sugerir el mejor método para cada uno.
Restricciones:
- Tengo que usar C y no una OOP porque estoy escribiendo código para un sistema incrustado, y el compilador y la base de código preexistente está en C.
- No hay asignación de memoria dinámica porque no tenemos suficiente memoria para asumir razonablemente que no se acabará si comenzamos a asignarla dinámicamente.
- Los compiladores con los que trabajamos no tienen problemas con los punteros de función
apr_
y GLib los prefija g_
para crear un espacio de nombres) y otros factores de organización sin OOP. Si va a reestructurar la aplicación de todos modos, consideraría pasar algún tiempo tratando de encontrar una estructura de procedimiento más sostenible.