pointers_to_members
pragma
Specyficzne dla języka C++
Określa, czy wskaźnik do składowej klasy można zadeklarować przed skojarzona definicją klasy. Służy do kontrolowania rozmiaru wskaźnika i kodu wymaganego do zinterpretowania wskaźnika.
Składnia
#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality
[,
most-general-representation
])
Uwagi
Możesz umieścić pointers_to_members
pragma element w pliku źródłowym jako alternatywę dla opcji/vmb
/vmg
lub i /vmm
/vms
, /vmv
kompilatora lub słów kluczowych dziedziczenia specyficznych dla firmy Microsoft.
Argument deklaracji wskaźnika określa, czy wskaźnik został zadeklarowany do elementu członkowskiego przed lub po skojarzonej definicji funkcji. Argument pointer-declaration
jest jednym z tych dwóch symboli:
full_generality
Generuje bezpieczny, czasem nieoptymalny kod. Użyjfull_generality
, jeśli jakikolwiek wskaźnik do składowej jest zadeklarowany przed skojarzona definicja klasy. Ten argument zawsze używa reprezentacji wskaźnika określonegomost-general-representation
przez argument. Odpowiednik elementu/vmg
.best_case
Generuje optymalny kod przy użyciu reprezentacji najlepszego przypadku dla wszystkich wskaźników do elementów członkowskich. Wymaga zdefiniowania klasy przed zadeklarowanie wskaźnika do elementu członkowskiego. Wartość domyślna tobest_case
.
most-general-representation
Argument określa najmniejszą reprezentację wskaźnika, która powinna być używana przez kompilator do bezpiecznego odwołowania się do elementu członkowskiego klasy w jednostce tłumaczenia. Argument może być jedną z następujących wartości:
single_inheritance
Najbardziej ogólną reprezentacją jest wskaźnik pojedynczego dziedziczenia do funkcji składowej. Odpowiednik elementu/vmg /vms
. Powoduje błąd, jeśli model dziedziczenia definicji klasy jest wielokrotny lub wirtualny.multiple_inheritance
Najbardziej ogólną reprezentacją jest wskaźnik wielokrotnego dziedziczenia do funkcji składowej. Odpowiednik elementu/vmg /vmm
. Powoduje błąd, jeśli model dziedziczenia definicji klasy jest wirtualny.virtual_inheritance
Najbardziej ogólną reprezentacją jest wskaźnik dziedziczenia wirtualnego do funkcji składowej. Odpowiednik elementu/vmg /vmv
. Nigdy nie powoduje błędu.virtual_inheritance
jest argumentem domyślnym, gdy#pragma pointers_to_members(full_generality)
jest używany.
Uwaga
Zalecamy umieszczenie jedynego pointers_to_members
pragma w pliku kodu źródłowego, który ma mieć wpływ, i dopiero po jakichkolwiek dyrektywach #include
. Ta praktyka zmniejsza ryzyko, że pragma wpłynie to na inne pliki, i że przypadkowo określisz wiele definicji dla tej samej zmiennej, funkcji lub nazwy klasy.
Przykład
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )
END C++ Specific