Udostępnij za pośrednictwem


Zakres i widoczność

Widoczność identyfikatora określa części programu, w których można się do niego odwoływać (jego "zakres"). Identyfikator jest widoczny (na przykład, może zostać użyty) tylko w częściach programu wchodzących w skład jego "zakresu", 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 nazwa może być używana.Jest to czasami nazywane "zakresem słownikowym". Istnieją cztery rodzaje zakresów: funkcji, pliku, bloku i prototypu 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
    Deklarator lub specyfikator typu dla identyfikatora z zakresem pliku pojawia się poza każdym blokiem lub listą parametrów i jest dostępny z dowolnego miejsca w jednostce tłumaczenia po jej deklaracji.Nazwy identyfikatorów z zakresem pliku są często nazywane "global" lub "external". Zakres globalnego identyfikatora rozpoczyna się w miejscu 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 dotyczących etykiet i nazw etykiet, zobacz Goto i instrukcje oznaczone.)

  • Zakres bloku
    Deklarator lub specyfikator typu dla identyfikatora z zakresem bloku pojawia się wewnątrz bloku lub listy deklaracji parametrów formalnych 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
    Deklarator lub specyfikator typu dla identyfikatora z zakresem prototypu funkcji pojawia się w obrębie listy deklaracji parametrów prototypu funkcji (nie jest częścią deklaracji funkcji).Jej zakres kończy się z końcem deklaratora funkcji.

Właściwe deklaracje do tworzenia zmiennych widocznych w innych plikach źródłowych są opisane w artykule Klasy magazynujące.Jednakże, zmienne i funkcje zadeklarowane na zewnętrznym poziomie ze specyfikatorem klasy magazynującej static są widoczne tylko w tym pliku źródłowym, w którym są zdefiniowane.Wszystkie pozostałe funkcje są widoczne globalnie.

Zobacz też

Koncepcje

Okres istnienia, zakres, widoczność i połączenie