如何禁用boost::math的long double功能 是否需要重新编译boost库
核心结论
不需要重新编译已经完成编译的boost库。
具体说明
BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS是仅作用于头文件的预处理宏,作用是在预处理阶段剔除boost::math头文件中所有long double类型的函数声明、模板特化与相关实现逻辑,不会影响boost预编译二进制库的生成逻辑,也不会和已生成的boost库产生ABI兼容问题。- boost::math的核心功能全部为头文件-only实现,只有极少数非核心辅助组件需要编译为二进制库,这些组件的编译逻辑完全不受该宏开关的影响。
- 仅存在一种极端例外场景需要重编boost:你编译boost时主动开启了强制实例化所有boost::math函数到二进制库的非常规编译选项,常规场景下默认编译的boost库都不需要额外重编。
- 你当前使用的编译指令符合要求,只要在编译自有业务源文件时携带该宏,即可正常禁用boost::math的long double相关功能。
内容的提问来源于stack exchange,提问作者Armstrong
相关产品推荐
相关产品推荐

