Beiträge von Diddl im Thema „C: Emulation von Klassen“

    Weil man mit z88dk und CC65 leistungsfähige C-Cross-Compiler für ZX Spectrum und C64/Atari800/Commander X16 hat.

    Ob es dafür C++-Cross-Compiler gibt, weiß ich nicht.

    Ich bin ein Freund von objektorientierter Programmierung.

    DA WO ES SINN MACHT.

    Funktionale Programmierung ist wunderbar, wo es nicht mehr braucht.

    Mit aller Gewalt objektorientiert zu arbeiten kann kontra produktiv sein!!

    ====

    Ich mag objektorientierte Programmierung in C.

    Es kapselt wunderbar alle Teile und macht sie mehrfach verwendbar.

    C++ hat sicher seine Berechtigung.

    Aber es birgt große Gefahren, speziell wenn man für sehr kleine Computer System entwickelt.

    Der Overhead ist gewaltig, wenn man nicht gut aufpasst.

    Wenn man neben C++ auch sehr fit in C ist, dann ist man sich viel bewusster welche Auswirkungen C++ Objekte bewirken.

    Man verwendet die Dinge nicht mehr so leichtfertig wie Entwickler, die nur mit C++ groß geworden sind und C kaum kennen.

    Speziell bei System mit wenig RAM und wenig Leistung kann C++ zum Verhängnis werden.

    Wenn man weiß was man tut und wie die Rädchen im Hintergrund laufen, dann ist C++ sehr okay.

    Du kannst in gewöhnlichem C auch mit "Klassen" arbeiten.

    Natürlich hat C Einschränkungen zu C++, aber man kann ganz gut tricksen:

    • am einfachsten ist es, wenn du für jede "Klasse" ein eigenes .c File machst das wie deine Klasse heißt
    • dazu ein eigenes .h File das wie deine Klasse heißt
    • alles was public (sichtbar nach außen) ist, das beginnt mit denselben Buchstaben
    • alle Daten des Objekt sind in einer Struktur (struct)
    • alle Funktionen haben als erstes Argument einen Zeiger auf diese Klassen Struktur
    • die Funktion MyClassNew() hat einen Zeiger auf einen Zeiger auf das Objekt
    • jede Klasse hat diese MyClassNew() und MyClassTerminate() Funktion
    • in dem Klassen .h File ist nur die Definition der Klassen struct sowie die Prototypen der public Funktionen