Třídy úložiště jazyka C
Třída úložiště proměnné určuje, jestli má položka "globální" nebo "místní" životnost. Jazyk C volá tyto dvě životnosti "static" a "automatic". Položka s globální životností existuje a má hodnotu v průběhu provádění programu. Všechny funkce mají globální životnost.
Automatické proměnné nebo proměnné s místními životnostmi se přidělují nové úložiště při každém průchodu ovládacího prvku provádění do bloku, ve kterém jsou definované. Při návratu provádění už proměnné nemají smysluplné hodnoty.
Jazyk C poskytuje následující specifikátory třídy úložiště:
Syntaxe
storage-class-specifier
:
auto
register
static
extern
typedef
__declspec (
extended-decl-modifier-seq
)
/* Specifické pro Microsoft */
__declspec
S výjimkou , můžete použít pouze jeden storage-class-specifier
v declaration-specifier
deklaraci. Pokud není provedena žádná specifikace třídy úložiště, deklarace v rámci bloku vytvářejí automatické objekty.
Položky deklarované pomocí specifikátoru auto
register
mají místní životnost. Položky deklarované pomocí specifikátoru static
extern
mají globální životnost.
Vzhledem k tomu typedef
, že se __declspec
sémanticky liší od ostatních čtyř storage-class-specifier
terminálů, jsou popsány samostatně. Konkrétní informace o typedef
deklaracích naleznete v tématu typedef
Deklarace. Konkrétní informace naleznete __declspec
v tématu Rozšířené atributy třídy úložiště.
Umístění deklarací proměnných a funkcí ve zdrojových souborech má vliv také na třídu úložiště a viditelnost. Deklarace mimo všechny definice funkcí se říká, že se zobrazují na "externí úrovni". Deklarace v definicích funkce se zobrazují na "vnitřní úrovni".
Přesný význam jednotlivých specifikátorů třídy úložiště závisí na dvou faktorech:
Zda se deklarace zobrazuje na externí nebo interní úrovni
Určuje, jestli je deklarovaná položka proměnnou nebo funkcí.
Specifikátory třídy úložiště pro deklarace externí úrovně a specifikátory třídy úložiště pro deklarace interní úrovně popisují storage-class-specifier
terminály v jednotlivých typech deklarace a vysvětlují výchozí chování při storage-class-specifier
vynechání z proměnné. Specifikátory třídy úložiště s deklaracemi funkcí probírají specifikátory třídy úložiště používané s funkcemi.