extern struct ind Funktionen anlegen

Gast #1116437
Lesenswert?

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
Gast #1116453
Lesenswert?

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
Gast #1116465
Lesenswert?

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.
Gast #1116481
Lesenswert?

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 ?
#1116514
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren