Rozsah a viditelnost
"Viditelnost" identifikátoru určuje části programu, ve kterých lze na identifikátor odkazovat - jeho "obor". Identifikátor je zobrazen (tj, lze použít) pouze v částech programu zahrnutých jeho "oborem", což může představovat omezení (ve smyslu stoupajícího omezení) souboru, funkce, bloku nebo prototypu funkce, ve kterých se vyskytuje.Obor identifikátoru je součástí programu, ve kterém lze použít název.Tomuto se občas říká "lexikální obor". Existují čtyři druhy oborů: funkce, soubor, blok a prototyp funkce.
Všechny identifikátory s výjimkou popisků mají jejich rozsah určený úrovní, ve které dochází k deklaraci.Pro každý druh oboru viditelnosti identifikátorů programu platí následující pravidla:
Rozsah souboru
Deklarátor nebo specifikátor typu identifikátoru s rozsahem souboru se zobrazí vně bloku nebo seznamu parametrů a je přístupný z jakéhokoli místa v jednotce překladu po její deklaraci.Názvy identifikátorů jsou spolu s rozsahem souboru často nazývány "globální" nebo "externí". Obor globálního identifikátoru začíná v místě jeho definice nebo deklarace a končí na konci jednotky překladu.Obor funkce
Popisek je jediný druh identifikátoru, který má rozsah funkce.Popisek je deklarován implicitně jeho použitím v příkazu.Názvy popisků musí být v rámci funkce jedinečné. (Další informace o popiscích a názvech popisků naleznete v tématu Popsané příkazy a goto.)Rozsah bloku
Uvnitř bloku nebo v seznamu deklarací formálních parametrů se v definici funkce objeví deklarátor nebo specifikátor typu pro identifikátor s rozsahem bloku.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 "místní proměnné."Rozsah prototypu funkce
Deklarátor nebo specifikátor typu identifikátoru s rozsahem prototypu funkce 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, které jsou deklarovány na vnější úrovni pomocí specifikátoru třídy úložiště static jsou však viditelné pouze v rámci zdrojového souboru, ve kterém jsou definovány.Všechny ostatní funkce jsou viditelné globálně.