Zakładając, że muszę używać C (bez C ++ lub kompilatorów obiektowych) i nie mam dynamicznej alokacji pamięci, jakich technik mogę użyć do zaimplementowania klasy lub dobrego przybliżenia klasy? Czy zawsze warto wyodrębnić „klasę” do osobnego pliku? Załóżmy, że możemy wstępnie przydzielić pamięć, przyjmując stałą liczbę wystąpień lub nawet definiując odniesienie do każdego obiektu jako stałą przed kompilacją. Zapraszam do zakładania, którą koncepcję OOP będę musiał wdrożyć (będzie się różnić) i zasugeruj najlepszą metodę dla każdego.
Ograniczenia:
- Muszę używać C, a nie OOP, ponieważ piszę kod dla systemu osadzonego, a kompilator i wcześniej istniejący kod jest w C.
- Nie ma dynamicznej alokacji pamięci, ponieważ nie mamy wystarczającej ilości pamięci, aby rozsądnie założyć, że jej nie zabraknie, jeśli zaczniemy ją dynamicznie alokować.
- Kompilatory, z którymi pracujemy, nie mają problemów ze wskaźnikami funkcji
apr_
a GLib dodaje do nich przedrostek, g_
aby utworzyć przestrzeń nazw) i inne czynniki organizujące bez OOP. Jeśli i tak zamierzasz zrestrukturyzować aplikację, rozważę poświęcenie czasu na wymyślenie łatwiejszej do utrzymania struktury proceduralnej.