Mario G. schrieb:
> Ich verstehe den Sinn der __low_level_init Funktion. Vollkommen unklar
> ist mir jedoch, was es für einen Sinn macht, wenn diese Funktion 0
> zukück gibt und somit keine globalen Variablen (...) initialisiert
> werden. Ist der Startvorgang dann wirklich so viel schneller?
Kommt wohl auf die Menge der globalen Variablen an.
In der µC Porgrammierung benötigt man globale Variablen auf jeden Fall
um mit einer ISR zu kommunizeren.
In der generellen, allgmeinen Programmierung hingegen lautet die
Empfehlung: so wenig globale Variablen wie möglich. Funktionen werden
universeller benutzbar, wenn sie nicht über globale Variablen gefüttert
werden, sondern ihre Argumente als Funktionsargumente bekommen.
> ...und
> kann man komplett ohne globale Variablen arbeiten?
Nur weil sie nicht automatisch initialisiert werden, heißt das ja noch
lange nicht, dass man deswegen auf globale Variablen verzichten muss.
Wenn du in deinem Programm 200 globale Variablen hast, von denen es aber
nur bei 2 kritisch ist, dass sie am Anfang mit 0 initialisiert werden,
kannst du ja immer noch schreiben
1 | int main()
|
2 | {
|
3 | global1 = 0;
|
4 | global2 = 0;
|
5 |
|
6 | ... und los gehts
|
die anderen globalen Variablen kriegen ihre Werte dagegen erst zur
Laufzeit und es ist völlig unerheblich welchen Wert sie beim Start von
main() haben.