Wie Bibliothek aufbauen



  • Hallo,

    mal eine Frage, wie würdet ihr eine kleine Bibliothek aufbauen, sodass sie möglichst effizient weiterverwendet werden kann. Ich nehme jetzt einfach mal als beispiel eine doppelt verkette Liste.

    Beispiel C Pseudo Code

    #ifndef __DOPPELT_VERKETTETE_LISTE__
    #define __DOPPELT_VERKETTETE_LISTE__
    
    typedef struct verketteteListe {
    	//...
    } list_t
    
    int erstellen(list_t **list);
    
    int einfügen(list_t *list, void *item);
    
    bool enthalten(list_t *list, void *item);
    
    #endif // __DOPPELT_VERKETTETE_LISTE__
    

    So in dieser Weise hätte ich das jetzt angegangen. Jede der Funktionen (außer enthalten()) liefert einen int zurück, an dem ich anschließend abfragen kann, ob die Funktion fehlgeschlagen ist, oder nicht. Bei enthalten() ist das jetzt schon nicht mehr möglich.

    Angenommen eine Funktion schlägt Fehl, wäre es super, wenn sie einen entsprechenden Fehlercode zurückliefern würde (Bsp: -1, -2, -3,...). Um nicht immer mit diesen Zahlen arbeiten zu müssen, fänd ich es schöner, irgendwie mit Bezeichner arbeiten zu können. Da wären ja

    • #define, wie #define ERROR -1
    • enum
    • struct

    Also, ich persönlich würde ja sowas bevorzugen:

    if(einfügen() == verketteteListe.ERROR) {
        // Fehlerbehandlung
    }
    

    Aber wie würde man sowas machen?

    Mich würde mal interessieren, wie ihr sowas machen würdet.

    grüße
    seux



  • seux schrieb:

    Also, ich persönlich würde ja sowas bevorzugen:

    if(einfügen() == verketteteListe.ERROR) {
        // Fehlerbehandlung
    }
    

    Würde ich nicht 😃

    seux schrieb:

    Aber wie würde man sowas machen?

    Prinzipiell:

    typedef struct verketteteListe {
        //...
        int ERROR
    } list_t
    

    mit einer error-set-function.

    seux schrieb:

    Mich würde mal interessieren, wie ihr sowas machen würdet.

    Ohne den Schnickschnack.
    Was sollen in einem Listen-Modul schon groß für Fehler passieren(von Programmierfehlern abgesehen :D), außer out of memory?
    Diesen boolschen Kram würde ich auch weglassen, dafür ist auch ein int gut genug.
    (Siehe Standardfunktionen wie ferror, etc).

    seux schrieb:

    #ifndef __DOPPELT_VERKETTETE_LISTE__
    #define __DOPPELT_VERKETTETE_LISTE__
    

    Führende Unterstriche im Code sollte man auch lieber sein lassen, das ist vereinbarungsgemäß dem Systemcode vorbehalten.
    Ich hatte mal Stundenlang nach einem Fehler gesucht, weil das nicht wusste.


Log in to reply