5

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

../depends\boost/config/abi_prefix.hpp(19) : 警告 C4103: 'depends\boost\config\abi_prefix.hpp' : 包含标题后对齐方式发生变化,可能是由于缺少 #pragma pack(pop)

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

4

3 回答 3

6

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

这允许他们在任何地方重用相同的#pragma pack 代码,这很方便,因为它可能因编译器而异。

虽然它是完全安全的。#pragma push 后面跟着一个 pop,它只是包含在不同的文件中。因此,您可能应该禁用该错误。

于 2008-12-31T20:15:18.630 回答
2

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

于 2008-12-31T20:27:53.330 回答
0

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

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

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

#define BOOST_DISABLE_ABI_HEADERS

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

请参阅下面的评论以了解此解决方案的危险

于 2009-01-04T01:22:24.517 回答