Поделиться через


__declspec

Только для систем Microsoft

Расширенный синтаксис атрибута для указания сведений о хранени-класса использует __declspec ключевое слово, указывающее, что экземпляр заданного типа храниться с атрибутом хранени-класса Майкрософт-специфического перечислило ниже.Примеры других модификаторов хранени-класса: static и extern ключевые слова.Однако эти ключевые слова часть спецификации ANSI языков c и C++, и поэтому не охватываемые расширенный синтаксис атрибута.Расширенный синтаксис атрибута упрощает и унифицирует расширения Майкрософт-специфического на языках c и C++.

Грамматика

  • рассекречивани-описатель.
    __declspec ( продленн-рассекречивани-модификатор-seq )

  • продленн-рассекречивани-модификатор-seq.
    продленн-рассекречивани-модификаторOpt

    продленн-рассекречивани-модификатор продленн-рассекречивани-модификатор-seq

  • продленн-рассекречивани-модификатор.
    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")

Пробел отделяет последовательность модификатора объявления.В примерах в последующих подразделах.

Грамматика расширенных атрибутов поддерживает эти атрибуты хранени-класса Майкрософт-специфического: выравнивание" выберите" Домен приложения" нерекомендуемый" dllexport" dllimport" jitintrinsic" наг" noalias" noinline" noreturn" nothrow" novtable" процесс" ограничьте" safebuffers" selectanyи Поток.Он также поддерживает эти атрибуты COM-объект. свойство и UUID.

dllexport" dllimport" naked" noalias" nothrow" property" restrict" selectany" threadи uuid атрибуты хранени-класса свойства только объявления объекта или функции к которым они применяются.thread атрибут влияет только на данные и объекты.naked атрибут влияет только на функции.dllimport и dllexport влияние атрибутов функции, данные и объекты.property" selectanyи uuid COM-объект, влияют на атрибутов.

__declspec ключевые слова должны находиться в начале простого объявления.Компилятор игнорирует без предупреждения, любые __declspec ключевые слова, налагаемые после * или & перед в объявлении переменной и идентификатора.

A __declspec атрибут, указанный в начале объявления пользовательского типа применяется к переменной типа.Примеры.

__declspec(dllimport) class X {} varX;

В этом случае атрибут применяется к varX.A __declspec помещенный выберите атрибут class OR struct ключевое слово применяется к пользовательскому типу.Примеры.

class __declspec(dllimport) X {};

В этом случае атрибут применяется к X.

Общая рекомендация для использования __declspec атрибут для простых объявлений следующим образом:

decl-specifier-seq declarator-list;

рассекречивани-описатель-seq содержит, помимо прочего, базовый тип (например.int" floata typedefили имя класса), класс хранения (например.static" extern) или __declspec расширение.init-декларатор-список содержит, помимо прочего, часть указателя объявлений.Примеры.

__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

В следующем коде объявляется локальная переменная потока целых числа и инициализирует его с значением.

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

См. также

Ссылки

Ключевые слова C++

Расширенных атрибутов Хранени- Класса c#