Hukommelsesklasse
Variable storage class ( eng. Storage class ) er et koncept i nogle programmeringssprog . Det bestemmer omfanget af variablen, samt hvor længe variablen er i hukommelsen.
Hukommelsesklasser i C og C++
En variabel i programmeringssprogene C og C++ skal tilhøre præcis én lagerklasse, hvilket er angivet med et nøgleord, der er skrevet før variablens type.
- auto — automatisk ( lokal ). Automatiske variabler oprettes, når en funktion kommer ind og ødelægges, når den afsluttes. De er kun synlige inden for den funktion eller blok, hvor de er defineret. I C++11 er ordets betydning autoblevet ændret.
- static — statisk variabel (lokal). 1) Hvis statisk er inde i funktionen. For sådanne variable er omfanget normalt (inden for funktionen), men levetiden er konstant (værdien bevares mellem funktionskald). 2) statisk uden for en funktion har en anden betydning.
- extern er en ekstern ( global ) variabel. Eksterne variabler er tilgængelige, uanset hvor de er deklareret, ikke kun hvor de er defineret. Brug af nøgleordet ekstern tillader en funktion at bruge en ekstern variabel, selvom den er defineret senere i denne eller en anden fil. For sådanne variabler sker adressebinding på linktidspunktet.
- register — registervariabel (lokal). Dette ord er blot en "anbefaling" til compileren om at placere en hyppigt brugt variabel i processorregistre for at fremskynde programmet.
Hukommelsesklassen kan udelades, så gælder følgende standardindstillinger :
- variabler erklæret inde i en funktion eller blok betragtes som lokale (auto)
- variabler erklæret uden for alle funktioner betragtes som eksterne.
- funktioner betragtes som eksterne.
En statisk variabel erklæret uden for enhver funktion bliver en ekstern statisk variabel. Forskellen mellem en ekstern variabel og en ekstern statisk variabel ligger i deres omfang. En almindelig ekstern variabel kan bruges af funktioner i enhver fil, men en ekstern statisk variabel kan kun bruges af funktioner i samme fil, og efter at variablen er blevet defineret.
openmp
For at sikre parallel eksekvering af tråde giver OpenMP 2 klasser af variabler: delt (delt, synkroniseret) og privat (lokalt for hver tråd).
Links