Delen via


Opslagklasse

De opslagklasseaanduiding in een functiedefinitie geeft de functie extern of static opslagklasse.

Syntaxis

function-definition:
declaration-specifiers opterenattribute-seqopterendeclaratordeclaration-listopterencompound-statement

/* attribute-seq is Microsoft-specifiek */

declaration-specifiers:
storage-class-specifier declaration-specifiers opteren
type-specifier declaration-specifiers opteren
type-qualifier declaration-specifiers opteren

storage-class-specifier: /* Voor functiedefinities */
extern
static

Als een functiedefinitie geen definitie bevat storage-class-specifier, wordt de standaardwaarde van de opslagklasse ingesteld op extern. U kunt een functie expliciet declareren als extern, maar dit is niet vereist.

Als de declaratie van een functie de storage-class-specifierexternid bevat, heeft de id dezelfde koppeling als een zichtbare declaratie van de id met bestandsbereik. Als er geen zichtbare declaratie met bestandsbereik is, heeft de id externe koppeling. Als een id een bestandsbereik heeft en nee storage-class-specifier, heeft de id externe koppeling. Externe koppeling betekent dat elk exemplaar van de id hetzelfde object of dezelfde functie aangeeft. Zie Levensduur, Bereik, Zichtbaarheid en Koppeling voor meer informatie over koppelings- en bestandsbereik.

Declaraties van functie voor blokbereiken met een andere opslagklasseaanduiding dan extern fouten genereren.

Een functie met static opslagklasse is alleen zichtbaar in het bronbestand waarin deze is gedefinieerd. Alle andere functies, ongeacht of ze expliciet of impliciet opslagklasse krijgen extern , zijn zichtbaar in alle bronbestanden in het programma. Als static opslagklasse gewenst is, moet deze worden gedeclareerd bij het eerste exemplaar van een declaratie (indien aanwezig) van de functie en op de definitie van de functie.

Microsoft-specifieke

Wanneer de Microsoft-extensies zijn ingeschakeld, krijgt static een functie die oorspronkelijk is gedeclareerd zonder opslagklasse (of met extern opslagklasse) als de functiedefinitie zich in hetzelfde bronbestand bevindt en als de definitie expliciet opslagklasse aangeeftstatic.

Wanneer functies worden gecompileerd met de optie /Ze compiler, hebben functies die zijn gedeclareerd in een blok met behulp van het extern trefwoord globale zichtbaarheid, wat niet waar is bij het compileren met /Za. Deze functie moet niet worden vertrouwd als de overdraagbaarheid van broncode een overweging is.

Microsoft-specifieke beëindigen

Zie ook

C-functiedefinities