Aracılığıyla paylaş


__declspec

Microsoft'a Özgü

Depolama sınıfı bilgilerini belirtmek için genişletilmiş öznitelik söz dizimi __declspec anahtar sözcüğünü kullanır; bu anahtar sözcük belirli bir türden örneğin aşağıda listelenen Microsoft'a özgü depolama sınıfı özniteliğiyle depolanması gerektiğini belirtir.Diğer depolama sınıfı değiştiricilere ait örnekler static ve extern anahtar sözcüklerini içerir.Ancak bu anahtar sözcükler C ve C++ dillerinin ANSI belirtiminin bir parçasıdır ve genişletilmiş öznitelik söz dizimi kapsamında değildir.Genişletilmiş söz dizimi özniteliği Microsoft'a özel C ve C++ dilleri genişletmelerini basitleştirir ve standartlaştırır.

Dilbilgisi

  • decl-specifier:
    __declspec ( extended-decl-modifier-seq )

  • extended-decl-modifier-seq:
    extended-decl-modifieropt

    extended-decl-modifier extended-decl-modifier-seq

  • extended-decl-modifier:
    align(#)

    allocate("segname")

    appdomain

    code_seg("segname")

    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")

Beyaz boşluk, bildirim değiştirici sırasını ayırır.Örnekler sonraki bölümlerde gösterilir.

Genişletilmiş öznitelik dilbilgisi Microsoft'a özgü depolama sınıfı özniteliklerini destekler: align, allocate, appdomain, code_seg, deprecated, dllexport, dllimport, jitintrinsic, naked, noalias, noinline, noreturn, nothrow, novtable, process, restrict, safebuffers, selectany ve thread.Ayrıca bu COM nesnesi özniteliklerini de destekler: özelliği ve uuid.

code_seg, dllexport, dllimport, naked, noalias, nothrow, property, restrict, selectany, thread ve uuid depolama sınıfı öznitelikleri yalnızca uygulandıkları nesne bildirimi veya işlevin özellikleridir.thread özniteliği yalnızca nesneleri ve verileri etkiler.naked özniteliği yalnızca işlevleri etkiler.dllimport ve dllexport öznitelikleri işlevleri, verileri ve nesneleri etkiler.property, selectany ve uuid öznitelikleri COM nesnelerini etkiler.

__declspec anahtar sözcükleri basit bir bildirimin başlangıcına yerleştirilmelidir.Derleyici, * or & öğesinden sonraki ve bir bildirimdeki değişken tanımlayıcının önündeki __declspec anahtar sözcüklerini uyarı göstermeden yok sayar.

Kullanıcı tanımlı tür bildiriminin başında belirtilen __declspec özniteliği bu türün değişkenlerine uygulanır.Örneğin:

__declspec(dllimport) class X {} varX;

Bu durumda öznitelik varX öğesine uygulanır.class veya struct anahtar sözcüğünden sonra gelen __declspec özniteliği, kullanıcı tanımlı türe uygulanır.Örneğin:

class __declspec(dllimport) X {};

Bu durumda öznitelik X öğesine uygulanır.

Basit bildirimler için __declspec özniteliğini kullanmaya yönelik genel yönerge aşağıdaki gibidir:

decl-specifier-seq declarator-list;

decl-specifier-seq diğerlerinin yanı sıra bir taban türü (örn.int, float, typedef veya bir sınıf adı), bir depolama sınıfı (örn.static, extern) veya __declspec uzantısı içermelidir.init-declarator-list diğer işlemlerin yanında bildirimlerin işaretçi bölümünü de içermelidir.Örneğin:

__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

Aşağıdaki kod bir tamsayı iş parçacığı yerel değişkeni bildirir ve bunu bir değer ile başlatır:

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

Ayrıca bkz.

Başvuru

C++ Anahtar Sözcükleri

C Genişletilmiş Depolama Sınıfı Öznitelikler