Forum: Mikrocontroller und Digitale Elektronik C Heap Stack Usage


von StandByMe (Gast)


Lesenswert?

Hallo,
schon lange stelle ich mir die Frage, ob es nicht irgendwo im WWW eine 
Übersicht gibt, die die C Schlüsselwörter static, volatile, extern etc. 
einmal zu aufführt, dass man sofort erkennt in welchen Zusammenhang eine 
Variablendeklaration mit einem dieser Schlüsselwörter zu welcher 
Register Belegung etc. führt?

von Purzel H. (hacky)


Lesenswert?

Uiiiiii, nicht gefunden? Wo hast du denn gesucht? Dann stell doch m) 
Vermutungen auf, wir schauen uns's dann an.

von N. G. (newgeneration) Benutzerseite


Lesenswert?

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

oder Suchfunktion im Forum
oder er-google-n
oder C-Buch

von Karl H. (kbuchegg)


Lesenswert?

StandByMe schrieb:

> zu welcher
> Register Belegung etc. führt?

In C gibt es keine Register.
Genauso wie es auch keinen Stack gibt oder einen Heap.

Wie ein Compiler die Forderungen des C-Sprachstandards umsetzt, ist 
alleine dem Compilerbauer überlassen. Das wir diese Begriffe Stack+Heap 
trotzdem benutzen, liegt darin begründet, dass dies die üblichen 
Implementierungen sind. Aber gefordert sind diese Dinge nirgends vom 
Sprachstandard.
Das Schlüsselwort 'register' ist ein kleiner Sonderfall, welcher 
allerdings seit Jahrzehnten von den gängigen Compilern sowieso ignoriert 
wird. Es hat so gesehen heutzutage praktisch keine Daseinsberechtigung 
mehr.

von StandByMe (Gast)


Lesenswert?

Gerade bei µC wird man doch darauf achten müssen, wo eine Variable 
abgelegt wird oder nicht?

von Peter II (Gast)


Lesenswert?

StandByMe schrieb:
> Gerade bei µC wird man doch darauf achten müssen, wo eine Variable
> abgelegt wird oder nicht?

ja sollte man. Dafür sollte man halt C können und dann erst die 
spezialtäten vom µC lernen.

von Karl H. (kbuchegg)


Lesenswert?

Peter II schrieb:
> StandByMe schrieb:
>> Gerade bei µC wird man doch darauf achten müssen, wo eine Variable
>> abgelegt wird oder nicht?
>
> ja sollte man. Dafür sollte man halt C können und dann erst die
> spezialtäten vom µC lernen.

Erstens das und zweitens hat das recht wenig mit den im Ursprungsposting 
aufgeführten Schlüsselwörtern zu tun. Denn bei denen geht es um 
Lebensdauer, Gültigkeitsbereich bzw. Sichtbarkeit und weniger darum, wo 
Variablen angelegt werden. Eben entsprechend den C-Regeln. Das sich 
daraus für einen spezifischen Compiler gewisse Folgerungen ergeben, wo 
und wie er Variablen erzeugt, liegt in der Natur der Sache, ist aber 
nichts was vom Sprachstandard definiert wird.
Hat man das Konzepte Lebensdauer von Variablen erst mal begriffen, dann 
ergibt sich daraus recht zwanglos wo eine Variable bei der Mehrheit der 
Compiler erzeugt wird. Ich sag absichtlich Mehrheit, weil ich nicht von 
allen C-Compilern die es gibt weiß, wie sie die Dinge handhaben.

von StandByMe (Gast)


Lesenswert?

Peter II schrieb:
> Dafür sollte man halt C können und dann erst die
> spezialtäten vom µC lernen.

Siehste PeterII, da hab ich doch schonmal einen guten Anhaltspunkt.

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.