Hallo, ich würde der Übersichtlichkeit halber meine Funktionen auf mehrere Files aufteilen. Ist es möglich ".noinit" Variablen in einer Funktionen lib anzulegen, die ich auch in der main.c benutzen kann? So etwa: main.c #include <funktionen1.h> void main(void) { .. .. global_var1 = 1; .. } funktionen1.h extern uint8_t global_var1 __attribute__((section(".noinit"))); funktionen1.c uint8_t global_var1 = 0; Was müsste ich dann noch anstellen, damit ich diese Variable auch noch in einer anderen lib verwenden möchte? funktionen2.h funktionen2.c global_var1 = 23; Gruß Norton
Norbert S. wrote: > Hallo, > ich würde der Übersichtlichkeit halber meine Funktionen auf mehrere > Files aufteilen. > Ist es möglich ".noinit" Variablen in einer Funktionen lib anzulegen, > die ich auch in der main.c benutzen kann? Ohne es jetzt ausprobiert zu haben Warum sollte das nicht gehen? > So etwa: > > main.c > #include <funktionen1.h> > void main(void) > { > .. > .. > global_var1 = 1; > .. > } > > funktionen1.h > extern uint8_t global_var1 __attribute__((section(".noinit"))); > > funktionen1.c > uint8_t global_var1 = 0; Das wiederspricht sich jetzt aber. Auf der einen Seite sagst du, die Variable wird nicht initialisert, auf der anderen Seite machst du aber genau das: die Variable initialisieren. Wenn schon, dann würde ich es so probieren funktionen1.h exetern uint8_t global_var1 funktionen1.c uint8_t global_var1 __attribute__((section(".noinit")));
Ich fürchte sowieso, der OP hat den Begriff "Library" nicht in der eigentlichen Bedeutung gewählt: der Modul soll vermutlich gar nicht in einer .a-Datei stehen. Von dort würde er nur geholt, wenn er auch referenziert wird. Wenn's nur um die Aufteilung auf mehrere Quelldateien geht: kein Thema, erst der Linker baut das ja zusammen. Dennoch bedarf es natürlich irgendeiner Form von "extern"-Deklaration (z. B. über ein Headerfile) für all die Quellcode-Module, die die Variable nicht selbst definieren.
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.