Boost C++ 库

...世界上最受尊敬和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

第 3 章。配置

David Abrahams

配置
简介
应用程序定义的宏
库定义的宏

Boost.Python<boost/config.hpp> 中使用了几个配置宏,以及旨在由应用程序提供的配置宏。这些宏在此处记录。

这些是可能由使用 Boost.Python 的应用程序定义的宏。 请注意,如果您将 C++ 标准的严格解释扩展到涵盖动态库,则在编译不同的库(包括扩展模块和 Boost.Python 库本身)时使用这些宏的不同值,则违反了 ODR。 但是,我们不知道有任何 C++ 实现可以检测到这种特定违规或导致任何问题。

默认值

含义

BOOST_PYTHON_MAX_ARITY

15

要包装的任何函数、成员函数或构造函数的最大元数,调用指定为接受参数 x1、x2,...Xn 的 Boost.Python 函数。 这尤其包括回调机制,例如 object::operator()(...) 或 call_method<R>(... )。

BOOST_PYTHON_MAX_BASES

10

bases<...> 类模板的模板参数的最大数量,该模板用于指定包装的 C++ 类的基类。

BOOST_PYTHON_STATIC_MODULE

未定义

如果已定义,则阻止您的模块初始化函数在支持代码中区分的平台上被视为导出的符号

BOOST_PYTHON_ENABLE_CDECL

未定义

如果已定义,则允许包装使用 __cdecl 调用约定的函数。

BOOST_PYTHON_ENABLE_STDCALL

未定义

如果已定义,则允许包装使用 __stdcall 调用约定的函数。

BOOST_PYTHON_ENABLE_FASTCALL

未定义

如果已定义,则允许包装使用 __fastcall 调用约定的函数。

这些宏由 Boost.Python 定义,并且是仅对实现者和移植到新平台的人员感兴趣的实现细节。

默认值

含义

BOOST_PYTHON_TYPE_ID_NAME

未定义

如果已定义,则表明跨共享库边界的 type_info 比较在此平台上不起作用。 换句话说,如果 shared-lib-1 将 typeid(T) 传递给 shared-lib-2 中的函数,该函数将其与 typeid(T) 进行比较,则该比较可能会返回 false。 如果已 #define 此宏,则 Boost.Python 使用并比较 typeid(T).name(),而不是直接使用和比较 std::type_info 对象。

BOOST_PYTHON_NO_PY_SIGNATURES

未定义

如果为模块定义,则不会为模块函数的文档字符串生成 pythonic 签名,并且没有 python 类型与模块注册的任何转换器关联。 这也使模块的二进制大小减少约 14%(gcc 编译)。 如果为 boost_python 运行时库定义,则 docstring_options.enable_py_signatures() 的默认值设置为 false

BOOST_PYTHON_SUPPORTS_PY_SIGNATURES

如果 BOOST_PYTHON_NO_PY_SIGNATURES 未定义,则已定义

定义此宏是为了实现从不支持 pythonic 签名的旧版 Boost.Python 版本的平滑过渡。 有关示例用法,请参见此处。

BOOST_PYTHON_PY_SIGNATURES_PROPER_INIT_SELF_TYPE

未定义

如果已定义,则正确生成 __init__ 方法 “self” 参数的 python 类型,否则使用 object。 默认情况下未定义,因为它使模块的二进制大小增加约 14%(gcc 编译)。


PrevUpHomeNext