Forum: Compiler & IDEs AVR-GCC - defaultwert nicht benutzter buffer im ram


von Neubi (Gast)


Lesenswert?

hey,

ist der inhalt eines buffers "char buffer[5]" vom compiler (avr-gcc, 
winavr) jeweils definiert mit 0 aufgefüllt oder kann dort irgendein wert 
des ram's stehen ???

wer weis es genau ???


thx
Neubi

von Karl H. (kbuchegg)


Lesenswert?

Das kommt drauf an, wo diese Variable steht.

Globale Variablen werden, sofern es keine explizite
Initialisierung gibt, mit 0 initialisiert.

Alle anderen Variablen hingegen (also: welche in Funktionen)
haben undefinierte Werte.

Bei funktionslokalen static Variablen bin ich mir jetzt
nicht sicher, wie da die Vorschrift lautet. Aus dem Bauch
heraus würde ich mal sagen: wie globale Variablen. Kann
aber auch daneben liegen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karl heinz Buchegger wrote:

> Bei funktionslokalen static Variablen bin ich mir jetzt
> nicht sicher, wie da die Vorschrift lautet. Aus dem Bauch
> heraus würde ich mal sagen: wie globale Variablen.

Ja.

Referenz:
ISO/IEC 9899:1999 (E), 6.7.8 Initialization

10

... If an object that has static storage duration is not initialized
explicitly, then:

-- if it has pointer type, it is initialized to a null pointer;

-- if it has arithmetic type, it is initialized to (positive or
   unsigned) zero;

-- if it is an aggregate, every member is initialized (recursively)
   according to these rules;

-- if it is a union, the first named member is initialized
   (recursively) according to these rules.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Dein Bauch trügt nicht!
http://www.dclc-faq.de/kap17.htm

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
Noch kein Account? Hier anmelden.