En variebels egenskaper (i ansi c)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
BoF
EF Sponsor
Inlägg: 222
Blev medlem: 7 oktober 2006, 16:43:37

Inlägg av BoF »

Då har du antagligen förstått vad static betyder så jag blir lite förbryllad när du frågar varför den återanvänds? då den är varaktig!
Mike
Inlägg: 6
Blev medlem: 9 oktober 2007, 22:38:01
Ort: malmö

Inlägg av Mike »

Jag vet vilka 'två' betydelser static har (*1), beroende på vilka 'två' ställen man använder static på (*2), och vilka dem 'två' betydelserna blir för kompilatorn (*3).

(*1) internal linkage vs hur länge ska jag behålla värdet
(*2) utanför funktion block vs innanför funktions block
(*3) osynlig för länkningen vs initiera variabel och behåll värdet efter blocket är slut (dvs använd datasektionen istlället för stacken eller register). Intressant att notera är att i första fallet hjälper man kompilatorn att optimera och i andra fallet stjälper man den.

Min fråga är: Vad är den (historiska) orsaken till att man bestämde sig att använda samma C-ord för dessa två så (enligt mig) olika betydelser. Varför inte tex kalla static utanför alla block för intern (internal linkage) istället?

Hitintills har jag inte hittat eller hört någon som vet så jag mistänker att denna kuriosa har glömts bort.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Kan det inte vara så enkelt som att de för kompilatorn (kanske en gång i tiden iaf) var samma sak? Men att dom för programmeraren ser olika ut?
Låter rätt rimligt för variabler, men static för funktioner hittar jag ingen logisk koppling kontra variablerna.

Vet inte mycket historia då man är självlärd och inte läst några böcker av betydelse, så på det planet blir det en del spekulationer.
Skriv svar