Hallo, wird bei dem XC32 Compiler von Microchip das u.g. lokale statische Array "static int Puffer[MaxNummer][MaxWerte];" bei Prozessorstart automatisch auf 0 initialisiert ?
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
|
Anzeige
|
Werden statische lokale Arrays vom XC32 compiler automatisch beim Programmstart auf 0 initialisiertHallo, wird bei dem XC32 Compiler von Microchip das u.g. lokale statische Array "static int Puffer[MaxNummer][MaxWerte];" bei Prozessorstart automatisch auf 0 initialisiert ?
Normalerweise schon (Liegen im BSS). Aber schreib einfach
Wenn dir die Initialisierung wichtig ist. Wenn der Compiler das eh gemacht hätte, ist das kein zusätzlicher Code, und es dient gleichzeitig als Kommentar. :
Bearbeitet durch User
Wenn er mit dem C-Standard konform ist: ja.
Kann man nicht garantieren. Der GCC hatte dafür vor Jahren explizit zusätzlichen Code produziert. Danke an euch für die Hinweise (und dass ich nicht beschimpft worden bin :-) bei den alten PIC-Compilern (bevor sie non Microchip aufgekauft wurden) musste man den Startup-Code entsprechend ... konfigurieren/anpassen. Oft zählt da halt Zeit/platz Normalerweise trennt ein Compiler zwischen Bereichen, die gelöscht werden und Bereiche, die initialisiert werden. Über den gelöschten Bereich wird einfach jedes Byte mit 0 beschrieben, der initialisierte hat ein pendant im Flash, das drüberkopiert wird. Such mal unter Startup im Handbuch. Alternative (nicht ganz so sicher): Initialisiere mit einem Feld ungleich 0 und schaue, ob der Code (genauer: Der ROM-Bedarf) mehr wird. Im anderen Schritt lasse die Initialisierung ganz weg und schaue im Linker-File, ob es eine andere "section" gibt, in der die Variable jetzt liegt :
Bearbeitet durch User
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|