每当我在我的项目中加入 boost 时,我都会收到一百万条这样的警告。有谁知道我怎样才能摆脱警告?
../depends\boost/config/abi_prefix.hpp(19) : 警告 C4103: 'depends\boost\config\abi_prefix.hpp' : 包含标题后对齐方式发生变化,可能是由于缺少 #pragma pack(pop)
我知道我可以执行#pragma 来禁用警告,但我想知道这些警告的原因。
原因是 boost 不会在每个需要打包数据的文件中推送/弹出这些 pragma。他们#include 一个单独的文件进行推送(abi_prefix.hpp),然后是另一个(abo_suffix.hp),然后进行弹出。
这允许他们在任何地方重用相同的#pragma pack 代码,这很方便,因为它可能因编译器而异。
虽然它是完全安全的。#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 构建。
请参阅下面的评论以了解此解决方案的危险