PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OOP mit Ansi-C


mekakic
2009-07-09, 11:43:58
Was mit einer OO-Programmiersprache recht einfach ist, möchte ich irgendwie auch unter plain old C realisieren, allerdings komme ich eher aus der OO Welt.

Ich möchte eine Schnittstelle mit z.B. zwei Funktionen - init() und update() - für viele verschiedene Module implementieren. Von einer zentralen Stelle aus, wird dann für eine Liste von Elementen überall für jedes Modul z.B. ein update() aufgeführt.

Aktuell denke ich da nur drüber nach, aber sehe mich immer mit dem Problem konfrontiert, daß wenn ich irgendwie zentral und automatisiert alles aufrufen möchte, ich ja auch alle Header von allen Modulen einbauen muß, oder? Und dann wird es doch Namenskollision geben? Während man sonst die Schnittstelle hinter einer abstrakten Klasse lassen kann, brauche ich doch hier einen anderen Weg. Wie macht man das?

Ganon
2009-07-09, 12:00:02
Also das wird ziemlich hässlich.

Wenn du bei Google nach "OOP in C" suchst, gibt es mehrere Ansätze. Du musst dir auch gedanken ob du das dynamisch oder statisch machen willst.
z.B. http://ldeniau.home.cern.ch/ldeniau/html/oopc/oopc.html

Umgesetzt wurde das schon mal von GNOME mit ihrem GObject*. Glücklich ist damit keiner.

Das LLVM Projekt hat afaik auch einen recht guten C++ zu C Konverter.

Trap
2009-07-09, 12:05:34
Du möchtest also virtuelle Funktionen implementieren? Ist nicht schwierig, aber viel Schreibaufwand und viel Wartungsaufwand beim Ändern.

Ich würde da auch einen C++ zu C Compiler vorziehen. z.B. den von http://www.comeaucomputing.com/