每当我在项目中加入boost时,我会收到一百万次这样的警告。有谁知道我怎么能摆脱这些警告?
../取决于\升压/配置/ abi_prefix.hpp(19) :警告C4103: '取决于\提升\设置\ abi_prefix.hpp' :包括后对齐发生了变化 标题,可能是由于缺少#pragma 包(POP)
我知道我可以执行#pragma来禁用警告,但我想知道这些警告的原因。
答案 0 :(得分:6)
原因是boost不会在需要打包数据的每个文件中推送/弹出这些pragma。 #include一个单独的文件执行push(abi_prefix.hpp),然后另一个(abo_suffix.hp)执行pop。
这使得他们可以在任何地方重复使用相同的#pragma包代码,这在编译器之间可能会有所不同。
但这绝对安全。 #pragma push后跟一个pop,它只是包含在另一个文件中。所以你应该只是禁用那个错误。
答案 1 :(得分:2)
是的,你可以从config / abi / msvc_prefix.hpp中的#pragma pack指令获得。它表明你的项目的默认包装不是8.这是非常不寻常的,这是故意的吗?由于包装差异导致的错误可能有点难以诊断。
答案 2 :(得分:0)
我找到了摆脱这种警告的方法。
您需要编辑文件boost_1 _ ** \ boost \ config \ user.hpp并使用BOOST_DISABLE_ABI_HEADERS取消注释该行
所以你应该在这个文件中定义:
#define BOOST_DISABLE_ABI_HEADERS
完成后,只需build with bjam like you normally would。
有关此解决方案的危险,请参阅以下评论