Sdílet prostřednictvím


Třída úložiště

Specifikátor třídy úložiště v definici funkce poskytuje funkci buď extern nebo static třídu úložiště.

Syntaxe

function-definition:
declaration-specifiersopt opt declarator declaration-list attribute-seq compound-statement

/* attribute-seq je specifický pro Microsoft */

declaration-specifiers:
storage-class-specifierdeclaration-specifiersvolit
type-specifierdeclaration-specifiersvolit
type-qualifierdeclaration-specifiersvolit

storage-class-specifier: /* Pro definice funkcí */
extern
static

Pokud definice funkce neobsahuje storage-class-specifier, třída úložiště ve výchozím nastavení extern. Funkci můžete explicitně deklarovat jako extern, ale nevyžaduje se.

Pokud deklarace funkce obsahuje storage-class-specifier extern, identifikátor má stejné propojení jako jakákoli viditelná deklarace identifikátoru s oborem souboru. Pokud neexistuje žádná viditelná deklarace s oborem souboru, má identifikátor externí propojení. Pokud má identifikátor obor souboru a ne storage-class-specifier, má identifikátor externí propojení. Vnější propojení znamená, že všechny instance identifikátoru označují stejný objekt nebo funkci. Další informace o propojení a rozsahu souborů najdete v tématu Životnost, Rozsah, Viditelnost a Propojení.

Deklarace funkcí v oboru bloku se specifikátorem třídy úložiště jiným než extern generují chyby.

Funkce s static třídou úložiště je viditelná pouze ve zdrojovém souboru, ve kterém je definovaná. Všechny ostatní funkce, ať už mají extern třídu úložiště explicitně nebo implicitně, jsou viditelné ve všech zdrojových souborech v programu. Pokud static je požadovaná třída úložiště, musí být deklarována při prvním výskytu deklarace (pokud existuje) funkce a v definici funkce.

Specifické pro Microsoft

Pokud jsou povolena rozšíření Společnosti Microsoft, funkce původně deklarovaná bez třídy úložiště (nebo třídy extern úložiště) má třídu static úložiště, pokud je definice funkce ve stejném zdrojovém souboru a pokud definice explicitně určuje static třídu úložiště.

Při kompilaci s možností kompilátoru /Ze mají funkce deklarované v bloku pomocí klíčového extern slova globální viditelnost, což není pravdivé při kompilaci pomocí /Za. Tato funkce by se neměla spoléhat, pokud je potřeba zvážit přenositelnost zdrojového kódu.

END Microsoft Specific

Viz také

Definice funkcí jazyka C