1

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

是否可以指定使用哪个包装(参数/Zpvcpkg

4

1 回答 1

0

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

在我使用 gTest 或由 提供的其他库的头文件的任何地方,我都用和vcpkg将它们括起来。的值取决于默认设置,在我的例子中是.#pragma pack(push, n)#pragma pack(pop)n8

// 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与代码一起使用的解决方法,它使用不同的打包对齐方式。

于 2021-01-13T23:54:01.550 回答