Share via


selectany

Microsoft'a Özgü

Derleyiciye bildirilen genel veri öğesinin (değişken veya nesne) bir pick-any COMDAT (paketlenmiş işlev) olduğunu bildirir.

Sözdizimi

__declspec( selectany )Bildiricisi

Açıklamalar

Bağlantı zamanında, bir COMDAT'ın birden çok tanımı görülürse, bağlayıcı birini seçer ve kalanları atar. Bağlayıcı seçeneği /OPT:REF (İyileştirmeler) seçiliyse bağlayıcı çıktısında başvurulmayan tüm veri öğelerini kaldırmak için COMDAT eleme işlemi gerçekleşir.

Bildirimde genel işleve veya statik yöntemlere göre oluşturucular ve atama bir başvuru oluşturmaz ve /OPT:REF ortadan kaldırılmasını engellemez. Bu tür kodlardan gelen yan etkiler, verilere başka başvuru olmadığında bağımlı olmamalıdır.

Dinamik olarak başlatılan genel nesneler için, selectany başvurulmayan bir nesnenin başlatma kodunu da atar.

Genel veri öğesi normalde bir EXE veya DLL projesinde yalnızca bir kez başlatılabilir. selectany , üst bilgiler tarafından tanımlanan genel verilerin başlatılmasında, aynı üst bilgi birden fazla kaynak dosyada görüntülendiğinde kullanılabilir. selectany hem C hem de C++ derleyicilerinde kullanılabilir.

Dekont

selectany yalnızca dışarıdan görünen genel veri öğelerinin gerçek başlatmasına uygulanabilir.

Örnek: selectany öznitelik

Bu kod özniteliğinin selectany nasıl kullanılacağını gösterir:

//Correct - x1 is initialized and externally visible
__declspec(selectany) int x1=1;

//Incorrect - const is by default static in C++, so
//x2 is not visible externally (This is OK in C, since
//const is not by default static in C)
const __declspec(selectany) int x2 =2;

//Correct - x3 is extern const, so externally visible
extern const __declspec(selectany) int x3=3;

//Correct - x4 is extern const, so it is externally visible
extern const int x4;
const __declspec(selectany) int x4=4;

//Incorrect - __declspec(selectany) is applied to the uninitialized
//declaration of x5
extern __declspec(selectany) int x5;

// OK: dynamic initialization of global object
class X {
public:
X(int i){i++;};
int i;
};

__declspec(selectany) X x(1);

Örnek: COMDAT'ın katlandığından emin olmak için özniteliğini kullanın selectany

Bu kod, bağlayıcı seçeneğini de kullandığınızda selectany verilerin COMDAT katlanmasını sağlamak için özniteliğinin /OPT:ICF nasıl kullanılacağını gösterir. Verilerin ile selectany işaretlenmesi ve bir const (salt okunur) bölüme yerleştirilmesi gerektiğini unutmayın. Salt okunur bölümü açıkça belirtmeniz gerekir.

// selectany2.cpp
// in the following lines, const marks the variables as read only
__declspec(selectany) extern const int ix = 5;
__declspec(selectany) extern const int jx = 5;
int main() {
   int ij;
   ij = ix + jx;
}

END Microsoft'a Özgü

Ayrıca bkz.

__declspec
Anahtar Sözcükler