extern struct ind Funktionen anlegen

Gast #1116437
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
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 #1116457
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"
Gast #1116465
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.