Forum: Compiler & IDEs Programm auf mehrere C-Files aufteilen


von Gerald Gruber (Gast)


Lesenswert?

Morgen!

Ich habe ein Problem, mit dem ich mich jetzt schon ziemlich lange
rumschlage:
Und zwar: Um mein Programm ein bisschen übersichtlicher zu gestalten
wollte ich meine globalen Variablen und ein paar Methode in ein eigenes
C-File "auslagern" (Datei heißt common.c). Dazu gibt es auch ein
Header-File in dem ein paar Defines sind (common.h) welche von common.c
und main.c ("Hauptprogramm") includiert wird. In common.h hab ich
jetzt noch die Prototypen von common.c geschrieben, damit main.c sie
auch benutzen kann. Mein Problem sind jetzt noch die globalen
Variablen: Deklariere ich sie in common.c, erkennt main.c die Variablen
nicht. Schreibe ich sie jedoch in common.h, bekomme ich die Warnung,
dass sie doppelt deklariert wurden!
Wie oder Wo muss ich die globalen Variablen definieren??

Danke im voraus,

Gerald

von Sebastian (Gast)


Lesenswert?

in der .h datei die variablen als extern deklarieren und in alle dateien
einbinden.

zb. in common.h
extern unsigned short int GobVarX;
extern unsigned char Array[10];

in der main.c oder der common.c wird jetzt dir varible deklariert.
unsigned short int GobVarX;
unsigned char Array[10];

jetzt kannst du aud die glablen variblen zugreifen wenn du immer die*.h
datei einbindest.

Sebastian

von Peter Mahler (Gast)


Lesenswert?

Hallo,


deklariere deine globalen Variablen in der zu common.c gehörigen
Header-Datei(common.h) als extern und dann noch innerhalb von common.c
ohne extern.

Beispiel

common.h :
extern int GlobaleVariable;

common.c :

int GlobaleVariable;


main.c

#include "common.h"


void main(void) {
  GlobaleVariable++;
}

Gruss,

Peter

von Gerald Gruber (Gast)


Lesenswert?

Morgen!

WOW,danke für eure schnelle Hilfe!
Jetzt funktioniert es endlich so wie es soll!

mfg, Gerald

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
Noch kein Account? Hier anmelden.