vcpkg:指定结构成员对齐方式

vcpkg: Specify struct member alignment

本文关键字:成员 对齐 方式 结构 vcpkg      更新时间:2023-10-16

我有一些旧代码,它是用 1 字节(参数/Zp1(结构成员对齐的打包编译的,我正在添加带有 gTest 的单元测试。我正在使用vcpkg来安装 gTest,但它是使用 8 字节打包的默认设置编译的。我在Windows上使用VS2019。

是否可以指定使用哪种包装(参数/Zp(与vcpkg

由于在编译过程中无法更改库的结构成员对齐方式,vcpkg:在包含这些库的标头时,我不得不更改我的代码以使用不同的打包对齐方式。

在我使用 gTest 或vcpkg提供的其他库的标头时,我用#pragma pack(push, n)#pragma pack(pop)括起来。n的值取决于默认设置,在我的例子中是8.

// project specific headers
#include "version.hxx"
// 3rd party libraries (provided by vcpkg)
#pragma pack(push, 8)
#include <gtest/gtest.h>
#include <gtest/gmock.h>
#pragma pack(pop)
// STL
#include <vector>
using std::vector;

这不是最好的解决方案,但至少是一种将vcpkg与代码一起使用的解决方法,它使用不同的包装对齐方式。