在编译boost时定义BOOST_DISABLE_ABI_HEADERS会有什么危害?
来自boost文件:boost_1_37_0 \ boost \ config \ user.hpp
// BOOST_DISABLE_ABI_HEADERS: Stops boost headers from including any
// prefix/suffix headers that normally control things like struct
// packing and alignment.
//#define BOOST_DISABLE_ABI_HEADERS
为什么boost感觉需要控制结构填充和对齐?
是否可能与boost序列化有关,并确保它在所有平台上都能正常工作?如果我只运行Windows,我可以安全地定义它吗?
答案 0 :(得分:2)
定义确保ABI(application binary interface)在版本和编译器之间保持兼容。 如果没有这个,你的应用程序就无法使用另一个应用程序安装的boost dll(它可能是用不同于你的编译器编译的)。
如果您要静态链接到提升,或者如果您可以确保您的应用程序仅使用您自己编译的提升dll,那么是的,您可以安全地定义它。 但是,如果你不能保证,你不能定义它。
答案 1 :(得分:1)
以下是我在Boost文档中可以找到的内容: http://www.boost.org/doc/libs/1_31_0/libs/config/config.htm
这是一个相当古老的版本,但可能是#define的含义没有改变。
答案 2 :(得分:0)
以下是定义BOOST_DISABLE_ABI_HEADERS:
的概要总的来说,定义它并不是非常安全,而且单独放置会更安全。