hi, ich teile meinen C-Code zwecks Übersichtlichkeit in mehrere Files auf. Igendwie habe ich aber ständig das Problem, dass meine Globalen Variablen von Programmteilen nicht gefunden werden. Wollt das Problem mal ein für alle mal gelöst sehen. Deshalb meine Frage. Also es gibt natürlich: main.c main.h dann zB noch: funktionenA.c funktionenA.h funktionenB.c funktionenB.h in main.h habe ich natürlich funktionenA.h und funktionenB.h includiert wenn ich nun aber z.B. in einer Funktion die in funktionenB.c drinsteht eine Struktur brauche, die in funktionenA.h geschrieben steht - wie komm ich da am praktischsten dran? Normalerweise fang ich dann planlos an überall alles mögliche zu inkludieren. Doch dann bekomm ich meisst eine Endlosschleife beim Compilieren und bastle dann ewig hin bis es läuft. Da muss es doch eine Standardlösung geben vielen Dank Mirko
Nur mal 2 der über 800 Suchtreffer zu "header global" aus dem hiesigen Forum Beitrag "Fehler bei Variablendefinition im Header-File (AVR, GCC)" Beitrag "eigene Header files erstellen" Darin sollten Deine Fragen beantwortet sein, evtl auch in http://www.mikrocontroller.net/articles/Include-Files_(C)
Danke vielmals für die Antwort - bin schon ein Stück weitergekommen allerdings an einer Stelle hakts noch den Tipps aus Beitrag "Globale Variablen, mehrere Dateien" folgend hab ich mir eine Datei globals.h angelegt und folgendes reingeschrieben: #ifndef EXTERN #define EXTERN extern #endif EXTERN unsigned int LED1; EXTERN unsigned int LED2; EXTERN struct DataType { char time[10]; char date[10]; int value; } Data ; main.h #define EXTERN #include "globals.h" #include "A.h" #include "B.h" in A.h bzw. B.h #include "globals.h" in main.c, A.c und B.c #include "main.h" bzw. "A.h" bzw. "B.h" Für die extern deklarierten Varialen LED1 und 2 funktioniert das auch. Allerdings bekomme ich beim Compilieren den Fehler "redefinition of 'struct DataType'" gemeldet wär nett wenn ihr mir nochmal einen Tip geben könntet was ich falsch mache Mirko
In main.h: #include "globals.h" #include "A.h" // in A.h wird auch globals.h eingebunden #include "B.h" // in B.h ebenso Du bindest in main.h die globals.h gleich 3 mal ein, und das macht Probleme. Die kannst du beseitigen, indem du den Inhalt von global.h wie folgt "klammerst":
1 | #ifndef GLOBAL_H
|
2 | #define GLOBAL_H
|
3 | |
4 | // hier der eigentliche Inhalt von global.h
|
5 | |
6 | #endif
|
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.