Klasa magazynu

Specyfikator klasy magazynu w definicji funkcji daje funkcję extern lub static klasę magazynu.

Składnia

function-definition:
declaration-specifiersZdecydowaćattribute-seqZdecydowaćdeclaratordeclaration-listZdecydowaćcompound-statement

/* attribute-seq jest specyficzny dla firmy Microsoft */

declaration-specifiers:
storage-class-specifierdeclaration-specifiersZdecydować
type-specifierdeclaration-specifiersZdecydować
type-qualifierdeclaration-specifiersZdecydować

storage-class-specifier: /* W przypadku definicji funkcji */
extern
static

Jeśli definicja funkcji nie zawiera storage-class-specifierelementu , 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-specifierexternelement , 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ż

Definicje funkcji języka C