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

  

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

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

有帮助吗?

解决方案

原因是boost不会在需要打包数据的每个文件中推送/弹出这些pragma。 #include一个单独的文件执行push(abi_prefix.hpp),然后另一个(abo_suffix.hp)执行pop。

这允许他们在任何地方重复使用相同的#pragma包代码,这在编译器之间可能会有所不同。

但这绝对安全。 #pragma push后跟一个pop,它只是包含在另一个文件中。所以你应该只是禁用那个错误。

其他提示

是的,你可以从config / abi / msvc_prefix.hpp中的#pragma pack指令获得。它表明你的项目的默认包装不是8.这是非常不寻常的,这是故意的吗?由于包装差异导致的错误可能有点难以诊断。

我找到了摆脱这种警告的方法。

您需要编辑文件boost_1 _ ** \ boost \ config \ user.hpp并使用BOOST_DISABLE_ABI_HEADERS取消注释该行

所以你应该在这个文件中定义:

#define BOOST_DISABLE_ABI_HEADERS

完成后,只需像往常一样使用bjam构建

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top