Classe di archiviazioneStorage Class

L'identificatore della classe di archiviazione in una definizione di funzione offre alla funzione una classe di archiviazione extern o static.The storage-class specifier in a function definition gives the function either extern or static storage class.

SintassiSyntax

function-definition:function-definition:
declaration-specifiers optattribute-seq optdeclarator declaration-list optcompound-statementdeclaration-specifiers optattribute-seq optdeclarator declaration-list optcompound-statement

/* attribute-seq è specifico di Microsoft //* *attribute-seq is Microsoft Specific */

declaration-specifiers:declaration-specifiers:
storage-class-specifier declaration-specifiers optstorage-class-specifier declaration-specifiers opt

type-specifier declaration-specifiers opttype-specifier declaration-specifiers opt

type-qualifier declaration-specifiers opttype-qualifier declaration-specifiers opt

storage-class-specifier: /* Per le definizioni di funzione */storage-class-specifier: /* For function definitions */
externextern

staticstatic

Se una definizione non include storage-class-specifierextern, la classe di archiviazione viene impostata automaticamente su .If a function definition does not include a storage-class-specifier, the storage class defaults to extern. È possibile dichiarare in modo esplicito una funzione come extern, ma non è obbligatorio.You can explicitly declare a function as extern, but it is not required.

Se la dichiarazione di una funzione contiene storage-class-specifierextern, l'identificatore avrà lo stesso collegamento di qualsiasi dichiarazione visibile dell'identificatore con ambito file.If the declaration of a function contains the storage-class-specifier extern, the identifier has the same linkage as any visible declaration of the identifier with file scope. Se non è presente una dichiarazione visibile con ambito file, l'identificatore dispone di un collegamento esterno.If there is no visible declaration with file scope, the identifier has external linkage. Se un identificatore ha un ambito file e nessun storage-class-specifier, l'identificatore ha un collegamento esterno.If an identifier has file scope and no storage-class-specifier, the identifier has external linkage. Il collegamento esterno indica che ogni istanza dell'identificatore indica lo stesso oggetto o funzione.External linkage means that each instance of the identifier denotes the same object or function. Per altre informazioni sul collegamento e l'ambito del file, vedere Durata, ambito, visibilità e collegamento.See Lifetime, Scope, Visibility, and Linkage for more information about linkage and file scope.

Le dichiarazioni di funzione dell'ambito blocco con un identificatore della classe di archiviazione diverso da extern generano errori.Block-scope function declarations with a storage-class specifier other than extern generate errors.

Una funzione con la classe di archiviazione static è visibile solo nel file di origine in cui è definita.A function with static storage class is visible only in the source file in which it is defined. Tutte le altre funzioni, sia se viene loro fornita la classe di archiviazione extern in modo esplicito o implicito, sono visibili in tutti i file di origine nel programma.All other functions, whether they are given extern storage class explicitly or implicitly, are visible throughout all source files in the program. Se si vuole la classe di archiviazione static, è necessario dichiararla alla prima occorrenza di una dichiarazione (se presente) della funzione e al momento della definizione della funzione.If static storage class is desired, it must be declared on the first occurrence of a declaration (if any) of the function, and on the definition of the function.

Sezione specifica MicrosoftMicrosoft Specific

Quando le estensioni Microsoft sono abilitate, a una funzione originariamente dichiarata senza una classe di archiviazione (o con la classe di archiviazione extern) viene assegnata la classe di archiviazione static se la definizione di funzione si trova nello stesso file di origine e se la definizione specifica in modo esplicito la classe di archiviazione static.When the Microsoft extensions are enabled, a function originally declared without a storage class (or with extern storage class) is given static storage class if the function definition is in the same source file and if the definition explicitly specifies static storage class.

Durante la compilazione con l'opzione del compilatore /Ze, le funzioni dichiarate in un blocco che utilizzano la parola chiave extern dispongono di visibilità globale.When compiling with the /Ze compiler option, functions declared within a block using the extern keyword have global visibility. Ciò non si verifica durante la compilazione con /Za.This is not true when compiling with /Za. Questa funzionalità non è affidabile se la portabilità del codice sorgente è una considerazione.This feature should not be relied upon if portability of source code is a consideration.

Fine sezione specifica MicrosoftEND Microsoft Specific

Vedere ancheSee Also

Definizioni di funzioni CC Function Definitions