Hallo zusammen. Ich bin relativ neu dabei mit Controllern zu experimentieren. Nun habe ich die ein oder andere Sache schon programmiert und meine Apps werden größer. Da ich aus Gründen der Übersichtlichkeit mehrere Source Code Files habe, aber in mehreren Files die selbern Variablen benötige hatte ich überlegt diese in einer Header Datei zu deklarieren und dieselbe überall einzubinden. Der Grund zu meiner Überlegung ist der das mir die Übersicht und die Lust abhanden kommt immer in mehreren Files Variablen als extern zu deklarieren. Danke für Hilfestellungen und Anregungen! Mfg Thomas
Und ? wo ist da jetzt die Frage? /Glaskugel on Nehme mal an Du hast das gemacht, und bekommst vom Linker jede Menge Fehler... /Glaskugel off Mein vorschlag, ein "Globale" Haeder Datei nehmen die überall eingebunden wird (im Header der jeweiligen Datei), welche die Datei über extern(dafür ist das ja da) bekannt macht. Und an einer (sinnvollen) Stelle wird dann die Variable tatsächlich deklariert. Natürlich in einem c File. Variablendeklaration hat in einer Header Datei nix zu suchen...
Du könntest das z.B. so lösen: global.h: extern uint8_t GlobalVar; global.c: uint8_t GlobalVar; modul_x.c: #include "global.h" void myFunc1(void){ GlobalVar=5; } modul_y.c: #include "global.h" void myFunc2(void){ if(GlobalVar>4) PORTB=255; } Ansich sollte natürlich versucht werden, die Module so "gekapselt" wie möglich zu gestalten und die Verwendung programmglobaler Variablen zu minimieren. Gruß Frank
Hallo Genau was hier beschrieben wurde habe ich gemacht. Trotzdem meckert mein Linker rum, das er die von mir verwendete Variable nicht findet. Ich verwende den aktuellen IAR MSP430 Compiler
Meine Frage hat sich erledigt. Hab den Fehler gefunden.
Eine andere Möglichkeit wäre es, die Variablen als extern zu deklarieren. Bei meinem Projekt wird z.B. eine Struktur vom Typ config in der Datei config.c deklariert. In allen anderen c-Dateinen, die diese Struktur benutzen, steht oben extern configuration config; // import global variable from main file Der Linker löst das dann auf. Johannes
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.