Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Macros

Boost , Chapter 1. Boost.FunctionTypes 2.5 , Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Расширяется до числового значения, которое описывает максимальную функциональность, поддерживаемую библиотекой.

Дефолты до 20, если они явно не определены пользователем до включения первого заголовка библиотеки.

Следующие макросы не нуждаются в определении, если только не требуется настроить библиотеку для работы с компилятором и/или вызывающей конвенцией, не охватываемой механизмом автоматического обнаружения в boost/function_types/config/compiler.hpp.

Расширяется до последовательности троичных модулей (эти типы данных определены в документации библиотеки Boost Preprocessor). Каждый элемент последовательности описывает один спецификатор конвенции вызова. Первым элементом в каждом кортеже является макро-суффикс BOOST_FT_CC_*, вторым элементом является название тега, описывающего конвенцию вызова, а третьим — имя спецификатора. Уточнителем может быть пустая строка, поэтому третий элемент кортежа является либо BOOST_PP_EMPTY, либо BOOST_PP_IDENTITY(name).

Определите этот макрос, чтобы расширить набор возможных имен для пользовательских соглашений вызова. Макро по умолчанию ни к чему не расширяется.

Следующие имена предварительно определены библиотекой и не должны встречаться в определении BOOST_FT_CC_NAMES:

#define BOOST_FT_BUILTIN_CC_NAMES \
  (( IMPLICIT           , implicit_cc , BOOST_PP_EMPTY                ))\
  (( CDECL              , cdecl_cc    , BOOST_PP_IDENTITY(__cdecl   ) ))\
  (( STDCALL            , stdcall_cc  , BOOST_PP_IDENTITY(__stdcall ) ))\
  (( PASCAL             , pascal_cc   , BOOST_PP_IDENTITY(pascal    ) ))\
  (( FASTCALL           , fastcall_cc , BOOST_PP_IDENTITY(__fastcall) ))\
  (( CLRCALL            , clrcall_cc  , BOOST_PP_IDENTITY(__clrcall ) ))\
  (( THISCALL           , thiscall_cc , BOOST_PP_IDENTITY(__thiscall) ))\
  (( IMPLICIT_THISCALL  , thiscall_cc , BOOST_PP_EMPTY                ))
// Don't get confused by the last line, here (thiscall can't be specified
// explicitly prior to MSVC 8).

Включает специальную конференцию вызовов. * обозначает макросуффикс, как определено BOOST_FT_CC_NAMES или BOOST_FT_BUILTIN_CC_NAMES.

Макро расширяется до списка ограничений, разделяемых символом |. Возможные пункты:

  • callable_builtin
  • член
  • не-член
  • вариадный
  • non_variadic

Если такой макрос не определен для конкретной конвенции вызова, он отключен. Пример:

#define BOOST_FT_CC_STDCALL non_variadic|callable_builtin
// enables stdcall calling convention for all non-variadic, 
// callable, builtin types

Определение этого макроса приводит к определению следующих макросов, если они еще не определены:

#define BOOST_FT_CC_CDECL BOOST_FT_COMMON_X86_CCs
#define BOOST_FT_CC_STDCALL non_variadic|BOOST_FT_COMMON_X86_CCs
#define BOOST_FT_CC_FASTCALL non_variadic|BOOST_FT_COMMON_X86_CCs

Этот макрос позволяет изменять синтаксис вызываемых встроенных типов. Полезно обрабатывать компилятор конкретного размещения спецификатора вызывающей конвенции.

Определение по умолчанию выглядит следующим образом:

#define BOOST_FT_SYNTAX(result,lparen,cc_spec,type_mod,name,rparen) \
          result() lparen() cc_spec() type_mod() name() rparen()

Настройка на void для компиляторов, которые настаивают на параметре void для нулевых типов функций, пустой по умолчанию.

Поддержка инвалидов для cv-квалифицированных типов функций. Квалифицированные типы функций являются незаконными в соответствии с текущей стандартной версией, но по этому вопросу существует отчет о дефектах. Он по умолчанию 1 до изменения стандарта, установка этого макроса на 0 может не работать.

Следующие макросы полезны для тестирования при изменении исходного кода библиотеки.

Делает предварительную обработку компилятора максимально возможной из библиотечного кода (вместо загрузки уже предварительно обработанных файлов заголовка), если он определен.

Заставляет компилятор предварительно обрабатывать цикл возможных имен для пользовательских соглашений вызова (а не загружать уже предварительно обработанный файл заголовка), если он определен.

Этот макрос определяется автоматически, если определено BOOST_FT_CC_NAMES.


PrevUpHomeNext

Статья Macros раздела Chapter 1. Boost.FunctionTypes 2.5 Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 07:34:07/0.00649094581604/0