C Heap Stack Usage

Gast #3202611
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?
#3202621
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.
#3202651
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren