试图摆脱c ++加速警告

时间:2008-12-31 20:08:24

标签: c++ boost

每当我在项目中加入boost时,我会收到一百万次这样的警告。有谁知道我怎么能摆脱这些警告?

  

../取决于\升压/配置/ abi_prefix.hpp(19)   :警告C4103:   '取决于\提升\设置\ abi_prefix.hpp'   :包括后对齐发生了变化   标题,可能是由于缺少#pragma   包(POP)

我知道我可以执行#pragma来禁用警告,但我想知道这些警告的原因。

3 个答案:

答案 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

有关此解决方案的危险,请参阅以下评论