Condividi tramite


Classe di archiviazione

L'identificatore di classe di archiviazione in una definizione di funzione fornisce la funzione extern o static la classe di archiviazione.

Sintassi

function-definition:
declaration-specifiersopt opt declarator declaration-list attribute-seq compound-statement

/* attribute-seq è specifico di Microsoft */

declaration-specifiers:
storage-class-specifierdeclaration-specifiersoptare
type-specifierdeclaration-specifiersoptare
type-qualifierdeclaration-specifiersoptare

storage-class-specifier: /* Per le definizioni di funzione */
extern
static

Se una definizione di funzione non include , storage-class-specifierper impostazione predefinita la classe di archiviazione è extern. È possibile dichiarare in modo esplicito una funzione come extern, ma non è necessaria.

Se la dichiarazione di una funzione contiene , storage-class-specifier externl'identificatore ha lo stesso collegamento di qualsiasi dichiarazione visibile dell'identificatore con ambito file. Se non è presente alcuna dichiarazione visibile con ambito file, l'identificatore ha un collegamento esterno. Se un identificatore ha ambito file e nessuna storage-class-specifier, l'identificatore ha un collegamento esterno. Il collegamento esterno indica che ogni istanza dell'identificatore indica lo stesso oggetto o funzione. Per altre informazioni sul collegamento e sull'ambito del file, vedere Durata, ambito, visibilità e collegamento.

Le dichiarazioni di funzione dell'ambito blocco con un identificatore della classe di archiviazione diverso da extern generano errori.

Una funzione con static classe di archiviazione è visibile solo nel file di origine in cui è definito. Tutte le altre funzioni, sia che vengano assegnate extern in modo esplicito o implicito, siano visibili in tutti i file di origine nel programma. Se static si desidera una classe di archiviazione, deve essere dichiarata nella prima occorrenza di una dichiarazione (se presente) della funzione e nella definizione della funzione.

Sezione specifica Microsoft

Quando le estensioni Microsoft sono abilitate, a una funzione dichiarata originariamente senza una classe di archiviazione (o con extern la classe di archiviazione) viene assegnata static una classe di archiviazione se la definizione della funzione si trova nello stesso file di origine e se la definizione specifica static in modo esplicito la classe di archiviazione.

Quando viene compilata con l'opzione del compilatore /Ze, le funzioni dichiarate all'interno di un blocco usando la parola chiave hanno visibilità globale, che non è true durante la extern compilazione con /Za. Questa funzionalità non deve essere considerata se la portabilità del codice sorgente è una considerazione.

Fine sezione specifica Microsoft

Vedi anche

Definizioni di funzioni C