Ich arbeite an einer mittelgroßen eingebetteten Anwendung in C mit OO-ähnlichen Techniken. Meine "Klassen" sind .h / .c-Module, die Datenstrukturen und Funktionszeigerstrukturen verwenden, um Kapselung, Polymorphismus und Abhängigkeitsinjektion zu emulieren.
Nun würde man erwarten, dass eine myModule_create(void)
Funktion mit einem myModule_destroy(pointer)
Gegenstück kommt. Da das Projekt eingebettet ist, sollten die Ressourcen, die realistisch instanziiert werden, niemals freigegeben werden.
Ich meine, wenn ich 4 serielle UART-Ports habe und 4 UART-Instanzen mit den erforderlichen Pins und Einstellungen erstelle, gibt es absolut keinen Grund, UART # 2 irgendwann zur Laufzeit jemals zerstören zu wollen.
Sollte ich nach dem YAGNI-Prinzip (Du wirst es nicht brauchen) die Destruktoren weglassen? Das scheint mir äußerst seltsam, aber ich kann mir keine Verwendung für sie vorstellen. Ressourcen werden beim Ausschalten des Geräts freigegeben.
myModule_create(void)
Funktion haben? Sie können die spezifischen Instanzen, die Sie voraussichtlich verwenden, in der von Ihnen bereitgestellten Schnittstelle fest codieren.