Dela via


Lagringsklass

Storage-class-specificeraren i en funktionsdefinition ger funktionen antingen extern eller static lagringsklassen.

Syntax

function-definition:
declaration-specifiers väljaattribute-seqväljadeclaratordeclaration-listväljacompound-statement

/* attribute-seq är Microsoft-specifik */

declaration-specifiers:
storage-class-specifier declaration-specifiers välja
type-specifier declaration-specifiers välja
type-qualifier declaration-specifiers välja

storage-class-specifier: /* För funktionsdefinitioner */
extern
static

Om en funktionsdefinition inte innehåller en storage-class-specifier, standardvärdet för lagringsklassen är extern. Du kan uttryckligen deklarera en funktion som extern, men det krävs inte.

Om deklarationen för en funktion innehåller storage-class-specifierexternhar identifieraren samma länkning som en synlig deklaration av identifieraren med filomfånget. Om det inte finns någon synlig deklaration med filomfånget har identifieraren extern länkning. Om en identifierare har filomfång och nej storage-class-specifierhar identifieraren extern länkning. Extern länkning innebär att varje instans av identifieraren anger samma objekt eller funktion. Mer information om länkning och filomfång finns i Livslängd, Omfång, Synlighet och Länkning.

Funktionsdeklarationer för blockomfattning med en annan lagringsklassspecificerare än extern att generera fel.

En funktion med static lagringsklass visas endast i källfilen där den har definierats. Alla andra funktioner, oavsett om de uttryckligen eller implicit ges extern lagringsklass, visas i alla källfiler i programmet. Om static lagringsklassen önskas måste den deklareras den första förekomsten av en deklaration (om någon) av funktionen och på definitionen av funktionen.

Microsoft-specifik

När Microsoft-tilläggen är aktiverade får static en funktion som ursprungligen deklarerades utan lagringsklass (eller med extern lagringsklass) lagringsklass om funktionsdefinitionen finns i samma källfil och om definitionen uttryckligen anger lagringsklassstatic.

När de kompileras med kompileringsalternativet /Ze har funktioner som deklarerats inom ett block med nyckelordet extern global synlighet, vilket inte är sant när de kompileras med /Za. Du bör inte förlita dig på den här funktionen om portabilitet för källkod är ett övervägande.

Avsluta Microsoft Specifik

Se även

C-funktionsdefinitioner