Moin Leute, ich habe da mal eine Frage zu globalen Arrays. Folgende Situation ist gegeben: es gibt ein global.h in dem alle globalen Variaben, defines ... definiert sind. Auch mein globales Array so #define EEP_ADDR 0x0250 // zum speichern im EEProm #define gArrLen 10 u08 gAccDateTime[gArrLen]; diese Array wird in der Main Funktion teilweise mit Daten gefüllt und in dem util.c auch teilweise mit Daten gefüllt und später im Main wieder verwendet - auf die gefüllten Daten zugegriffen. Ist das so iO oder ehr ungeschickt gelöst. Sollte man eventuell lieber das Array zu dem jeweiligem *.C File übergeben also einer Funktion ... Wie sieht es dann mit dem Speicherverbrauch - Stack aus?? Oder wie löst Ihr solche sachen geschickt ?? Danke Holger.
Holger Patz schrieb: > es gibt ein global.h in dem alle globalen Variaben, defines ... > definiert sind. Auch mein globales Array so > > #define EEP_ADDR 0x0250 // zum speichern im EEProm > #define gArrLen 10 > u08 gAccDateTime[gArrLen]; > keine gute Idee. Die Definition von Variablen hat in Header Files nicht wirklich was verloren. In ein Header File gehören die Deklarationen. Die Definiton selbst ist in einem deiner *.c Files, jenachdem wo es Sinn macht. http://www.mikrocontroller.net/articles/FAQ#Globale_Variablen_.C3.BCber_mehrere_Dateien > Ist das so iO oder ehr ungeschickt gelöst. Kann in Ordnung sein. > Sollte man eventuell lieber > das Array zu dem jeweiligem *.C File übergeben also einer Funktion ... Kommt darauf an, was die Funktion macht. Wenn die Funktion in deinem Programm so speziell ist, dass du sie sowieso nie in irgendeinem anderen Programm wiederverwenden willst, ist das globale Array schon in Ordnung. > Wie sieht es dann mit dem Speicherverbrauch - Stack aus?? Ist kein Problem. Arrays werden sowieso nicht übergeben, sondern lediglich die Startadresse des Arrays im Speicher wird an die Funktion übergeben. Siehe zb. jedes beliebige C-Buch > Oder wie löst > Ihr solche sachen geschickt ?? Ich versuche Funktionen nach Möglichkeit so selbstständig wie möglich und mit so wenig Abhängigkeiten nach aussen wie vernünftig zu gestalten. Das erleichtert das Übernehmen einer Funktion von einem Projekt in ein anderes enorm, wenn man einfach nur die Funktion umkopieren und sich nicht um 100-tausend globale Variablen auch noch kümmern muss. Je kleiner der Scope von Variablen ist, desto einfacher ist eine Wiederverwendung von Funktionen ohne Gefahr zu laufen, dass sich die Namen von globalen Variablen in die Haare kommen.
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.