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_memberspragma element w pliku źródłowym jako alternatywę dla opcji/vmb/vmglub i /vmm/vms,/vmvkompilatora 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żyj full_generality , jeśli jakikolwiek wskaźnik do składowej jest zadeklarowany przed skojarzona definicja klasy. Ten argument zawsze używa reprezentacji wskaźnika określonego most-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 to best_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_memberspragma 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

Zobacz też

Dyrektywy Pragma i __pragma słowa kluczowe i _Pragma