__declspec
Konkrétní společnosti Microsoft
Rozšířený atribut syntaxe určující použití třídy úložiště informací __declspec klíčové slovo určuje, že daný typ instance uložena s atributem třídy úložiště společnosti Microsoft uvedených níže.Příklady jiných modifikátory třídy úložiště static a extern klíčová slova.Však tato klíčová slova jsou součástí specifikace ANSI C a C++ jazyků a jako takové nejsou pokryty syntaxe doplňkového atributu.Rozšířený atribut syntaxe zjednodušuje a standardizuje rozšíření společnosti Microsoft pro jazyky c a C++.
Gramatika
Specifikátor Decl:
__declspec ( Extended-decl modifikátor seq)Extended-decl modifikátor seq:
Extended modifikátor decloptExtended modifikátor decl extended-decl modifikátor seq
Extended modifikátor decl:
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")
Prázdné místo odděluje sekvence modifikátor deklarace.Příklady se v dalších oddílech.
Rozšířený atribut gramatiky podporuje tyto atributy třídy úložiště společnosti Microsoft: Zarovnat, přidělit, appdomain, se, dllexport, dllimport, jitintrinsic, holé, noalias, noinline, noreturn, nothrow, novtable, proces, omezit, safebuffers, selectany, a vlákno.Podporuje také tyto atributy objektu COM: Vlastnost a uuid.
dllexport, dllimport, naked, noalias, nothrow, property, restrict, selectany, thread, A uuid vlastnosti objektu nebo funkce, které jsou použity pouze prohlášení jsou atributy třídy úložiště.thread Má vliv na data a objekty pouze atribut.naked Atribut ovlivní pouze funkce.dllimport a dllexport atributů ovlivnit funkce data a objekty.property, selectany, A uuid vliv atributy objektů COM.
__declspec Uvádět klíčová slova na začátku jednoduchého prohlášení.Kompilátor ignoruje bez varování všech __declspec klíčových slov zadaných po * nebo & a z identifikátor proměnné v prohlášení.
A __declspec na začátku prohlášení uživatelem definovaný typ zadán atribut platí pro proměnné typu.Příklad:
__declspec(dllimport) class X {} varX;
V tomto případě platí atribut pro varX.A __declspec atribut umístěn po class nebo struct klíčového slova, která se vztahuje na typ definovaný uživatelem.Příklad:
class __declspec(dllimport) X {};
V tomto případě platí atribut pro X.
Obecných pro použití __declspec atribut jednoduchého prohlášení není takto:
decl-specifier-seq declarator-list;
Decl specifikátor seq by měl obsahovat, mimo jiné základní typ (napříkladintfloat, typedef, nebo název třídy), úložiště (například třídastatic, extern), or the __declspec extension.Init declarator seznamu by měl obsahovat mimo jiné ukazatele část prohlášení.Příklad:
__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
Následující kód deklaruje místní proměnná typu integer podprocesu a inicializuje s hodnotou:
// Example of the __declspec keyword
__declspec( thread ) int tls_i = 1;