Sdílet prostřednictvím


selectany

Konkrétní společnosti Microsoft

Kompilátoru sděluje, že zboží deklarované globální data (proměnnou nebo objekt) je vyskladnění každé COMDAT (balené funkce).

__declspec( selectany ) declarator

Poznámky

V okamžiku spojení pokud jsou vidět více definic COMDAT, vytvořeném propojovacím vybere jednu a odstraní zbývající.Pokud možnost linker /OPT:REF (optimalizace) je vybrána, a pak odeberte všechny položky na které neexistuje odkaz data ve výstupu linker dojde k odstranění COMDAT.

Konstruktory a přiřazení globální funkce nebo statické metody v prohlášení vytvořit odkaz a zabránit odstranění /OPT:REF.Vedlejší účinky takového kódu by není závislé na když neexistuje žádné odkazy na data.

Pro dynamicky inicializována, globální objekty selectany bude ignorovat, na které neexistuje odkaz objekt inicializace kód i.

Globální datové položky můžete inicializovat obvykle pouze jednou v souboru EXE nebo DLL projektu.selectanylze použít při inicializaci globální data definovaná záhlaví, při stejné záhlaví se zobrazí více než jeden zdrojový soubor.selectanyje k dispozici na c a C++ kompilátory.

[!POZNÁMKA]

selectanylze použít pouze na skutečné inicializace globální datové položky, které jsou viditelné.

Příklad

Tento kód ukazuje, jak použít selectany atribut:

//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);

Tento kód ukazuje, jak použít selectany atribut zajistit také pomocí skládání COMDAT dat /OPT:ICF možnost linker.Všimněte si, že data musí být označeno selectany a umístěné v const oddílu (jen pro čtení).Musíte přesně zadat části jen pro čtení.

// 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;
}

Konec konkrétní společnosti Microsoft

Viz také

Referenční dokumentace

__declspec

Klíčových slov jazyka C++