我发现,困难的方式至少boost::program_options
取决于编译器配置的结构成员对齐方式。
如果您使用默认设置构建 boost 并使用 4 字节对齐 ( ) 将其与项目链接,/Zp4
它将在运行时失败(使用 program_options 进行最小测试)。Boost 将生成一个断言,指示可能存在错误的调用约定,但真正的原因是结构成员对齐。
有什么办法可以防止这种情况发生吗?如果对齐使代码不兼容,这不应该包含在库命名中吗?
我发现,困难的方式至少boost::program_options
取决于编译器配置的结构成员对齐方式。
如果您使用默认设置构建 boost 并使用 4 字节对齐 ( ) 将其与项目链接,/Zp4
它将在运行时失败(使用 program_options 进行最小测试)。Boost 将生成一个断言,指示可能存在错误的调用约定,但真正的原因是结构成员对齐。
有什么办法可以防止这种情况发生吗?如果对齐使代码不兼容,这不应该包含在库命名中吗?