struct pointer an funktion übergeben (in anderem c-file)



  • Hallo,

    ich habe in einem Headerfile eine struct definiert.

    typedef struct name {
    	// inhalt der struct 					
    };
    

    im c-file habe ich einen pointer auf die struct gesetzt (global - in keiner Funtkion drinnen)

    struct name *ptr_name[anzahl_structs];
    

    innerhalb einer Funktion dieses c-files ruf ich ein anderes c-file auf (mit einem Funktionsaufruf - an diese Funktion möchte ich gern den Pointer auf die Struct übergeben. Nur leider funktioniert das nicht....

    funktion_aufruf(ptr_name[anzahl]);
    

    Im Headerfile des zweiten C-files steht

    void funktion_aufruf( struct name *ptr_name);
    

    Fehlermeldung: "declaration is not visible outside of function

    Was mache ich falsch bzw. was muss ich anders machen, damit es funktioniert 😕

    Hans_im_Unglück



  • Hallo Hans,

    im Headerfile hast du einen Fehler gemacht.

    Entweder du verwendest

    struct name {
       // inhalt des structs
    };
    

    oder du machst einen typedef

    typedef struct name {
        // inhalt des structs
    } name_t;
    

    Typedefs verwendet man, um sich Schreibarbeit zu ersparen.
    Zum Beispiel kannst du dann folgendes schreiben:

    name_t ptr_name[100];
    

    welches dir ein Array der Länge 100, deren Einträge vom Typ struct name
    ist.

    Wenn du nun einen Eintrag an eine Funktion übergeben möchtest:

    function(ptr_name[50]);
    

    Dabei hat die function folgende Gestalt:

    void function(name_t a);
    

    Wenn du nun in dem Struct etwas ändern möchtest:

    void function(name_t *a);
    function(&(ptr_name[50]));
    

    Und wenn du das ganze Array an eine Funktion übergeben möchtest:

    void function(name_t a[]);
    oder
    void function(name_t a[100]);
    

    Mit Aufruf

    function(ptr_name);
    

    Ich hoffe, ich habe alle deine Fragen beantworten können.



  • vielen dank für deine antwort...

    - ich musste noch die Headerfiles (bei der Einbindung vertauschen) ansonsten hat der "name_t" nicht gefunden.

    Hans_im_Glück


Anmelden zum Antworten