Code auf mehrere Dateien verteilen



  • Ich würde gerne einige Funktionen, die ich im Hauptprogramm brauche, in eine externe Datei auslagern. Etwa so:

    main.c:

    #include "main.h"
    
    mystruct_t global_variable_needed_everywhere;
    
    void func1();
    
    int main()
    {
       func1();
       return 0;
    }
    
    void func1()
    {
       global_variable_needed_everywhere.a = 1;
       global_variable_needed_everywhere.b = MYCONST;
       func2();
    }
    

    main.h:

    #define MYCONST 42
    
    typedef struct
    {
       int a;
       int b;
    } mystruct_t;
    

    function.c:

    #include "main.h"
    // irgendwie muss ich hier noch an die global_variable_needed_everywhere kommen,
    // aber #include "main.c" geht ja nicht...
    
    void func2();
    
    void func2()
    {
       global_variable_needed_everywhere.a *= MYCONST;
    }
    

    Wie kann ich das Problem am besten lösen?



  • Sorry für den Doppelpost - eigentlich wollte ich den Beitrag editieren, aber das geht als Unregistrierter natürlich nicht. Ich meinte also oben unter #include "main.h" auch noch ein #include "function.c".
    Könnte bitte ein Mod einen der Threads löschen (am besten diesen hier)?



  • Geht es nur darum an die globale Variable zu kommen? 😕
    Dann solltest Du die Variablen mittels extern für das ganze Programm zugänglich machen.

    Ich nehme jedoch an, das die Frage auf etwas anderes abzielte, oder?



  • Die Aufteilung eines Programmcodes auf mehrere Dateien gehört zum unverzichtbaren Handwerkzeug der Programmierung dazu wie auch die Aufteilung einer komplexeren Aufgabe auf überschaubare Teilaufgaben. Die heutigen Compiler bieten dafür umfangreiche Hilfen, die als IDE bezeichnet werden und die das frühere Hantieren mit Makefiles überflüssig machen.

    Zum Programmierenlernen ist das ein Muss, sobald man mehr als 'Hello World' realisieren will. Ich denke, das solltest du dir mit den Beschreibungen deines Compilers selbst beibringen - wir wissen noch nicht einmal, welchen du einsetzt!


Anmelden zum Antworten