Sdílet prostřednictvím


Rozsah a viditelnost

"Viditelnost" identifikátoru určuje části programu, ve kterých na něj lze odkazovat – jeho "rozsah". Identifikátor je viditelný (tj. lze jej použít) pouze v částech programu, které jsou zahrnuty v jeho "oboru", který může být omezen (v rámci rostoucí restriktivnosti) na soubor, funkci, blok nebo prototyp funkce, ve kterém se vyskytuje. Rozsah identifikátoru je součástí programu, ve kterém lze použít název. Někdy se tomu říká "lexikální rozsah". Existují čtyři druhy rozsahu: funkce, soubor, blok a prototyp funkce.

Všechny identifikátory s výjimkou popisků mají svůj rozsah určený úrovní, ve které dochází k deklaraci. Pro každý druh rozsahu viditelnosti identifikátorů programu platí následující pravidla:

Rozsah souboru
Deklarátor nebo specifikátor typu pro identifikátor s oborem souboru se zobrazuje mimo jakýkoli blok nebo seznam parametrů a je přístupný z libovolného místa v jednotce překladu po jeho deklaraci. Názvy identifikátorů s oborem souboru se často nazývají "globální" nebo "externí". Obor globálního identifikátoru začíná v okamžiku jeho definice nebo deklarace a končí na konci lekce překladu.

Obor funkce
Popisek je jediný druh identifikátoru, který má obor funkce. Popisek je deklarován implicitně použitím v příkazu. Názvy popisků musejí být v rámci funkce jedinečné. (Další informace o popiscích a názvech popisků najdete v tématu Příkazy goto a Labeled.)

Rozsah bloku
Deklarátor nebo specifikátor typu pro identifikátor s oborem bloku se zobrazí uvnitř bloku nebo v seznamu deklarací formálních parametrů v definici funkce. Je viditelný pouze z místa jeho deklarace nebo definice až po konec bloku obsahujícího jeho deklaraci nebo definici. Jeho rozsah je omezen na tento blok a na jakékoli vnořené bloky v tomto bloku a končí složenou závorkou, která přidružený blok ukončí. Tyto identifikátory jsou někdy označovány jako „lokální proměnné“.

Rozsah prototypu funkce
Deklarátor nebo specifikátor typu pro identifikátor s oborem function-prototype se zobrazí v seznamu deklarací parametrů v prototypu funkce (není součástí deklarace funkce). Jeho rozsah končí na konci deklarátoru funkce.

Příslušné deklarace pro zviditelnění proměnných v jiných zdrojových souborech jsou popsány v tématu Třídy úložiště. Proměnné a funkce deklarované na externí úrovni se specifikátorem static třídy úložiště jsou však viditelné pouze ve zdrojovém souboru, ve kterém jsou definovány. Všechny ostatní funkce jsou viditelné globálně.

Viz také

Doba života, rozsah, viditelnost a propojení