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 |
|
BOOST_PYTHON_STATIC_MODULE |
未定义 |
如果已定义,则阻止您的模块初始化函数在支持代码中区分的平台上被视为导出的符号 |
BOOST_PYTHON_ENABLE_CDECL |
未定义 |
如果已定义,则允许包装使用 |
BOOST_PYTHON_ENABLE_STDCALL |
未定义 |
如果已定义,则允许包装使用 |
BOOST_PYTHON_ENABLE_FASTCALL |
未定义 |
如果已定义,则允许包装使用 |
这些宏由 Boost.Python 定义,并且是仅对实现者和移植到新平台的人员感兴趣的实现细节。
宏 |
默认值 |
含义 |
---|---|---|
BOOST_PYTHON_TYPE_ID_NAME |
未定义 |
如果已定义,则表明跨共享库边界的 type_info 比较在此平台上不起作用。 换句话说,如果 shared-lib-1 将 |
BOOST_PYTHON_NO_PY_SIGNATURES |
未定义 |
如果为模块定义,则不会为模块函数的文档字符串生成 pythonic 签名,并且没有 python 类型与模块注册的任何转换器关联。 这也使模块的二进制大小减少约 14%(gcc 编译)。 如果为 boost_python 运行时库定义,则 |
BOOST_PYTHON_SUPPORTS_PY_SIGNATURES |
如果 |
定义此宏是为了实现从不支持 pythonic 签名的旧版 Boost.Python 版本的平滑过渡。 有关示例用法,请参见此处。 |
BOOST_PYTHON_PY_SIGNATURES_PROPER_INIT_SELF_TYPE |
未定义 |
如果已定义,则正确生成 |