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