Minnesklass
Variabel lagringsklass ( eng. Storage class ) är ett begrepp i vissa programmeringsspråk . Det bestämmer omfattningen av variabeln, samt hur länge variabeln finns i minnet.
Minnesklasser i C och C++
En variabel i programmeringsspråken C och C++ måste tillhöra exakt en lagringsklass, vilket indikeras av ett nyckelord som är skrivet före variabelns typ.
- auto — automatisk ( lokal ). Automatiska variabler skapas när en funktion kommer in och förstörs när den avslutas. De är endast synliga inom funktionen eller blocket där de är definierade. I C++11 har ordets betydelse autoändrats.
- static — statisk variabel (lokal). 1) Om statisk är inuti funktionen. För sådana variabler är omfattningen normal (inom funktionen), men livslängden är konstant (värdet bevaras mellan funktionsanrop). 2) statisk utanför en funktion har en annan betydelse.
- extern är en extern ( global ) variabel. Externa variabler är tillgängliga var de än deklareras, inte bara där de definieras. Genom att använda nyckelordet extern kan en funktion använda en extern variabel, även om den definieras senare i denna eller en annan fil. För sådana variabler sker adressbindning vid länktid.
- register — registervariabel (lokal). Detta ord är bara en "rekommendation" till kompilatorn att placera en ofta använd variabel i processorregister för att påskynda programmet.
Minnesklassen kan utelämnas, då gäller följande standardinställningar :
- variabler som deklareras inuti en funktion eller ett block anses vara lokala (auto)
- Variabler som deklareras utanför alla funktioner anses vara externa.
- funktioner anses vara externa.
En statisk variabel som deklareras utanför en funktion blir en extern statisk variabel. Skillnaden mellan en extern variabel och en extern statisk variabel ligger i deras omfattning. En vanlig extern variabel kan användas av funktioner i vilken fil som helst, men en extern statisk variabel kan endast användas av funktioner i samma fil och efter att variabeln har definierats.
openmp
För att säkerställa parallell exekvering av trådar tillhandahåller OpenMP 2 klasser av variabler: delad (delad, synkroniserad) och privat (lokal för varje tråd).
Länkar