pointers_to_members pragma

Специфика C++

Указывает, можно ли объявлять указатель на член класса до определения связанного класса. Используется для управления размером указателя и кодом, необходимым для интерпретации указателя.

Синтаксис

#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality [ ,most-general-representation ] )

Замечания

Исходный файл можно поместить в качестве альтернативы использованию /vmb параметров компилятора или/vmg/vmm, /vms/vmv компилятора или ключевое слово наследования майкрософт.pointers_to_memberspragma

Аргумент объявления указателя указывает, объявлен ли указатель на элемент до или после связанного определения функции. Аргумент pointer-declaration является одним из следующих двух символов:

  • full_generality
    Создает безопасный, но не всегда оптимальный код. Используйте full_generality , если любой указатель на элемент объявлен до определения связанного класса. Этот аргумент всегда использует представление указателя, указанное аргументом most-general-representation . Эквивалент /vmg.

  • best_case
    Создает оптимальный код, используя лучшее представление для всех указателей на элементы. Требуется определить класс перед объявлением указателя на член. Значение по умолчанию — best_case.

Аргумент most-general-representation указывает наименьшее представление указателя, которое компилятор должен использовать для безопасной ссылки на любой указатель на член класса в модуле перевода. Аргумент может быть одним из следующих значений:

  • single_inheritance
    Наиболее общим представлением является однонаследование, указывающего на функцию-член. Эквивалент /vmg /vms. Вызывает ошибку, если модель наследования определения класса является несколькими или виртуальными.

  • multiple_inheritance
    Наиболее общим представлением является указатель на функцию-член с несколькими наследованиями. Эквивалент /vmg /vmm. Вызывает ошибку, если модель наследования определения класса является виртуальной.

  • virtual_inheritance
    Наиболее общим представлением является указатель на функцию-член виртуального наследования. Эквивалент /vmg /vmv. Никогда не вызывает ошибку. virtual_inheritance — это аргумент по умолчанию при #pragma pointers_to_members(full_generality) использовании.

Внимание

Мы советуем поместить pointers_to_memberspragma только в файл исходного кода, который вы хотите повлиять, и только после каких-либо #include директив. Эта практика снижает риск, который pragma повлияет на другие файлы, и вы случайно укажедите несколько определений для одной переменной, функции или имени класса.

Пример

//   Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )

END C++ Specific

См. также

Директивы Pragma и __pragma_Pragma ключевое слово