Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"Widoczność" identyfikatora określa części programu, do których można się odwoływać — jego "zakres". Identyfikator jest widoczny (tj. może być używany) tylko w częściach programu objętego jego "zakresem", który może być ograniczony (w celu zwiększenia restrykcyjności) do pliku, funkcji, bloku lub prototypu funkcji, w którym się pojawia. Zakres identyfikatora jest częścią programu, w której może być używana nazwa. Jest to czasami nazywane "zakresem leksykalnym". Istnieją cztery rodzaje zakresu: funkcja, plik, blok i prototyp funkcji.
Wszystkie identyfikatory z wyjątkiem etykiet mają zakres uzależniony od poziomu, na którym występuje deklaracja. Dla każdego rodzaju zakresu, widocznością identyfikatorów w programie rządzą następujące zasady:
Zakres pliku
Specyfikator lub specyfikator typu dla identyfikatora z zakresem pliku pojawia się poza dowolnym blokiem lub listą parametrów i jest dostępny z dowolnego miejsca w jednostce tłumaczenia po jego deklaracji. Nazwy identyfikatorów z zakresem plików są często nazywane "globalnymi" lub "zewnętrznymi". Zakres identyfikatora globalnego rozpoczyna się od momentu jego definicji lub deklaracji i kończy się na końcu jednostki tłumaczenia.
Zakres funkcji
Etykieta jest jedynym rodzajem identyfikatora, który ma zakres funkcji. Etykieta jest niejawnie zadeklarowana przez jej użycie w instrukcji. Nazwy etykiet muszą być unikatowe w obrębie danej funkcji. (Aby uzyskać więcej informacji na temat etykiet i nazw etykiet, zobacz Instrukcje goto i Oznaczone).
Zakres bloku
Specyfikator lub specyfikator typu dla identyfikatora z zakresem bloku pojawia się wewnątrz bloku lub na liście formalnych deklaracji parametrów w definicji funkcji. Jest widoczny tylko od punktu jego deklaracji lub definicji do końca bloku, zawierającego jego deklarację lub definicję. Jej zakres jest ograniczony do tego bloku i wszelkich bloków zagnieżdżonych w tym bloku i kończy się nawiasem klamrowym, który zamyka skojarzony blok. Takie identyfikatory są czasami nazywane „zmiennymi lokalnymi”.
Zakres prototypu funkcji
Specyfikator lub specyfikator typu dla identyfikatora z zakresem prototypu funkcji pojawia się na liście deklaracji parametrów w prototypie funkcji (a nie części deklaracji funkcji). Jej zakres kończy się z końcem deklaratora funkcji.
Odpowiednie deklaracje do tworzenia zmiennych widocznych w innych plikach źródłowych są opisane w klasach magazynu. Jednak zmienne i funkcje zadeklarowane na poziomie zewnętrznym ze specyfikatorem static
klasy magazynu są widoczne tylko w pliku źródłowym, w którym są zdefiniowane. Wszystkie pozostałe funkcje są widoczne globalnie.