__declspec

Specifici di Microsoft

La sintassi degli attributi estesa per specificare le informazioni sulla classe di archiviazione utilizzano __declspec la parola chiave, che specifica di un'istanza di un tipo specificato deve essere archiviata con un attributo Microsoft-specifico di classe di archiviazione elencate di seguito.Esempi di altri modificatori di classe di archiviazione sono static e extern parole chiave.Tuttavia, queste parole chiave fa parte della specifica ANSI dei linguaggi c e C++ e C# come questi non vengono analizzati dalla sintassi degli attributi estesa.La sintassi degli attributi estesa semplifica e standardizza le estensioni specifiche microsoft ai linguaggi c e C++.

Grammatica

  • decl-identificatore:
    __declspec (esteso-decl-modificatore-seguente )

  • esteso-decl-modificatore-seguente:
    esteso-decl-modificatorescegliere

    esteso-decl-modificatore esteso-decl-modificatore-seguente

  • esteso-decl-modificatore:
    align(#)

    allocate("segname")

    appdomain

    deprecated

    dllimport

    dllexport

    jitintrinsic

    naked

    noalias

    noinline

    noreturn

    nothrow

    novtable

    process

    property({get=get_func_name|,put=put_func_name})

    restrict

    safebuffers

    selectany

    thread

    uuid("ComObjectGUID")

Lo spazio vuoto separa la sequenza di modificatori di dichiarazione.Gli esempi vengono visualizzati nelle sezioni successive.

La sintassi di attributo estesa supporta questi attributi specifici microsoft classe di archiviazione: allineare, allocare, appdomain, deprecato, dllexport, dllimport, jitintrinsic, naked, noalias, noinline, noreturn, nothrow, novtable, processo, limitare, safebuffers, selectanye thread.Supporta anche questi attributi a oggetti COM: proprietà e uuid.

dllexport, dllimport, naked, noalias, nothrow, property, restrict, selectany, threade uuid gli attributi della classe di archiviazione sono proprietà solo la dichiarazione dell'oggetto o della funzione a cui si applica.thread l'attributo influisce sui dati e oggetti solo.naked l'attributo influisce sulle funzioni solo.dllimport e dllexport l'effetto di attributi funziona, dati e oggetti.property, selectanye uuid oggetti COM effetti di attributi.

__declspec le parole chiave devono essere inserite all'inizio di una dichiarazione semplice.Il compilatore ignora, senza avviso, qualsiasi __declspec parole chiave inserite dopo * o & e davanti all'identificatore variabile in una dichiarazione.

In __declspec l'attributo specificato all'inizio di una dichiarazione di tipo definito dall'utente si applica alla variabile di quel tipo.Di seguito è riportato un esempio:

__declspec(dllimport) class X {} varX;

in questo caso, l'attributo si applica a varX.In __declspec attributo posizionato dopo class o struct la parola chiave viene applicata al tipo definito dall'utente.Di seguito è riportato un esempio:

class __declspec(dllimport) X {};

in questo caso, l'attributo si applica a X.

Orientamento a l __declspec l'attributo per le dichiarazioni semplici è la seguente:

decl-specifier-seq declarator-list;

decl-identificatore-seguente deve contenere, tra l'altro, un tipo di base (ad esempioint, float, a typedef, o nome di classe), una classe di archiviazione (ad esempiostatic, extern), o __declspec estensione.init-dichiaratore-elenco deve contenere, tra l'altro, la parte del puntatore delle dichiarazioni.Di seguito è riportato un esempio:

__declspec(selectany) int * pi1 = 0;   //OK, selectany & int both part of decl-specifier
int __declspec(selectany) * pi2 = 0;   //OK, selectany & int both part of decl-specifier
int * __declspec(selectany) pi3 = 0;   //ERROR, selectany is not part of a declarator

Il codice riportato di seguito viene dichiarata una variabile locale di thread di tipo Integer e inizializzarla con un valore:

// Example of the __declspec keyword
__declspec( thread ) int tls_i = 1;

Vedere anche

Riferimenti

Parole chiave C++

C ha esteso gli attributi di classe di archiviazione