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.