Udostępnij za pośrednictwem


__declspec

Programu Microsoft

Składnię atrybutów rozszerzonych, służącą do wykorzystania informacji klasy magazynowania __declspec słowa kluczowego, które określa, że wystąpienie danego typu mają być przechowywane z atrybutem klasy magazynowania specyficzne dla firmy Microsoft wymienionych poniżej.Przykłady innych modyfikatorów klasy magazynowania static i extern słowa kluczowe.Jednakże te słowa kluczowe są częścią specyfikacji ANSI języków c i C++ i jako takie nie są objęte przez składnię atrybutu rozszerzonego.Składnia atrybutu rozszerzonego upraszcza i standaryzuje rozszerzenia firmy Microsoft do języków c i C++.

Gramatyka

  • Specyfikator Decl:
    __declspec ( rozszerzone decl modyfikator seq)

  • rozszerzone decl modyfikator seq:
    rozszerzone decl modyfikatoropt

    rozszerzone decl modyfikator rozszerzone decl modyfikator seq

  • rozszerzone decl modyfikator:
    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")

Białe miejsca oddziela sekwencji modyfikator deklaracji.Przykłady są wyświetlane w kolejnych rozdziałach.

Gramatyka rozszerzonych atrybutów obsługuje te atrybuty klasy magazynowania specyficzne dla firmy Microsoft: wyrównać, przydzielić, elementu appdomain, przestarzałe, dllexport, dllimport, jitintrinsic, owies, noalias, noinline, noreturn, nothrow, novtable, proces, ograniczyć, safebuffers, selectany, i wątku.Obsługuje ona również te atrybuty obiektu COM: Właściwość i uuid.

dllexport, dllimport, naked, noalias, nothrow, property, restrict, selectany, thread, I uuid atrybuty klasy magazynowania są właściwości obiektu lub funkcji, które są stosowane tylko zgłoszenia.thread Atrybut wpływa na dane i obiekty tylko.naked Atrybut ma wpływ tylko funkcje.dllimport i dllexport atrybuty wpływa na funkcje, dane i obiekty.property, selectany, I uuid atrybuty wpływają na obiekty COM.

__declspec Słowa kluczowe, należy umieścić na początku prostych deklaracji.Kompilator ignoruje bez wyświetlania ostrzeżenia, w każdym __declspec słowa kluczowe umieszczone po * lub & i przed identyfikatorem zmiennej w deklaracji.

A __declspec atrybutu na początku deklaracji typu zdefiniowanego przez użytkownika stosuje się do zmiennych tego typu.Na przykład:

__declspec(dllimport) class X {} varX;

W tym przypadku atrybut stosuje się do varX.A __declspec atrybut umieszczone po class lub struct słowa kluczowego, które stosuje się do typu zdefiniowanego przez użytkownika.Na przykład:

class __declspec(dllimport) X {};

W tym przypadku atrybut stosuje się do X.

Ogólne wytyczne dotyczące korzystania z __declspec atrybut dla prostych deklaracji jest w następujący sposób:

decl-specifier-seq declarator-list;

Decl specyfikatora seq powinien zawierać, między innymi, typ podstawowy (np.intfloat, typedef, lub nazwa klasy), Magazyn klasy (np.static, extern), or the __declspec extension.Init; niewłaściwy deklarator listy powinien zawierać, między innymi, części wskaźnik deklaracji.Na przykład:

__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

Poniższy kod deklaruje zmiennej lokalnej wątku do liczby całkowitej i inicjuje ją z wartością:

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

Zobacz też

Informacje

Słów kluczowych języka C++

C rozszerzonych atrybutów klasy magazynu