Hallo, wenn ich eine Variabel global verwenden will, wird sie zuerst in der main.c definiert: uint8_t update=0; Wenn ich diese in einem anderen c-File verändern will muss ich sie mit extern uint8_t update; einbinden. Das funktioniert auch wie gewünscht. Wie kann ich dieses nun bei dem Datyntyp struct machen ? Als Beispiel habe ich in main.c eine Struktur angelegt: struct clock{ uint8_t hr; uint8_t min; uint8_t sec; }time; Grüße
Hallo Achim, Du definierst uint8_t update=0; in Deiner main.c Danach erstellst Du ein header file main.h in dieses schreibst Du extern uint8_t update; Nun erstellst Du ein neues C-File zB. Neues_File.c in dieses includest Du das main.h include <main.h> .... Code ... Damit ist dem Neues_File.c bekannt das update schon definiert ist und Du kannst es benutzen. Das wars Tom
Ich mach das immer so: In einer main.h struct clock{ uint8_t hr; uint8_t min; uint8_t sec; }; extern struct clock time; In main.c struct clock time; In deiner *.c #include "main.h"
Es geht mir eben und den Datentyp struct. Das Beispiel war: struct clock{ uint8_t hr; uint8_t min; uint8_t sec; }time; Leider kann ich in einem anderen c-File nicht einfach extern struct clock{ uint8_t hr; uint8_t min; uint8_t sec; }time; schreiben.
Ich habe die Deklarationen immer ohne .h Files gemacht. Also ganz einfach: In der main.c : uint8_t update=0; Und im anderen c-File: extern uint8_t update; Gibts es da kein Äquivalent für structs ?
>Gibts es da kein Äquivalent für structs ?
Nein, deine *.c Datei weiss ohne Headerdatei
ja nicht wie das struct aussieht.
main.h:
1 | //struct bechreiben
|
2 | struct clock{ |
3 | uint8_t hr; |
4 | uint8_t min; |
5 | uint8_t sec; |
6 | };
|
7 | /* wahlweise mit typedef das 'struct' loswerden:
|
8 | typedef struct clock clock_t;
|
9 | */
|
10 | // Die externe Variable vom Typ "struct clock" deklarieren
|
11 | extern struct clock the_real_clock; |
main.c:
1 | #include "main.h" |
2 | /* Die Variable "the_real_clock" definieren (d.h. GENAU EINMAL initialisieren): */
|
3 | struct clock the_real_clock = {0,30,3}; |
extra.c:
1 | #include "main.h" |
2 | //...
|
So steht's zumindest im Buch ;) hth, Jörg
Schon mal in einem C-Buch oder C-Tutorial geschaut? Gott gib uns mehr Verstand.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.