Klasa magazynu
Specyfikator klasy magazynu w definicji funkcji daje funkcję extern
lub static
klasę magazynu.
Składnia
function-definition
:
declaration-specifiers
Zdecydowaćattribute-seq
Zdecydowaćdeclarator
declaration-list
Zdecydowaćcompound-statement
/* attribute-seq
jest specyficzny dla firmy Microsoft */
declaration-specifiers
:
storage-class-specifier
declaration-specifiers
Zdecydować
type-specifier
declaration-specifiers
Zdecydować
type-qualifier
declaration-specifiers
Zdecydować
storage-class-specifier
: /* W przypadku definicji funkcji */
extern
static
Jeśli definicja funkcji nie zawiera storage-class-specifier
elementu , klasa magazynu jest domyślnie ustawiona na extern
. Możesz jawnie zadeklarować funkcję jako extern
, ale nie jest wymagana.
Jeśli deklaracja funkcji zawiera storage-class-specifier
extern
element , identyfikator ma takie samo połączenie, jak każda widoczna deklaracja identyfikatora z zakresem pliku. Jeśli nie ma widocznej deklaracji z zakresem pliku, identyfikator ma połączenie zewnętrzne. Jeśli identyfikator ma zakres plików i nie storage-class-specifier
, identyfikator ma połączenie zewnętrzne. Powiązania zewnętrzne oznaczają, że każde wystąpienie identyfikatora oznacza ten sam obiekt lub funkcję. Aby uzyskać więcej informacji na temat łączenia i zakresu plików, zobacz Okres istnienia, Zakres, Widoczność i Łączenie.
Deklaracje funkcji o zakresie bloku ze specyfikatorem klasy magazynu innym niż extern
.
Funkcja z klasą static
magazynu jest widoczna tylko w pliku źródłowym, w którym jest zdefiniowana. Wszystkie inne funkcje, niezależnie od tego, czy są one podane extern
klasie magazynu jawnie, czy niejawnie, są widoczne we wszystkich plikach źródłowych w programie. Jeśli static
wymagana jest klasa magazynu, musi zostać zadeklarowana w pierwszym wystąpieniu deklaracji (jeśli istnieje) funkcji i definicji funkcji.
Specyficzne dla firmy Microsoft
Po włączeniu rozszerzeń firmy Microsoft funkcja pierwotnie zadeklarowana bez klasy magazynu (lub z klasą extern
magazynu) otrzymuje static
klasę magazynu, jeśli definicja funkcji znajduje się w tym samym pliku źródłowym i jeśli definicja jawnie określa static
klasę magazynu.
Po skompilowaniu za pomocą opcji kompilatora /Ze funkcje zadeklarowane w bloku przy użyciu extern
słowa kluczowego mają globalną widoczność, która nie jest prawdziwa podczas kompilowania z /Za. Ta funkcja nie powinna być uzależniona od tego, czy przenośność kodu źródłowego jest brana pod uwagę.
END Microsoft Specific
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla