vcpkg:指定结构成员对齐方式
vcpkg: Specify struct member alignment
我有一些旧代码,它是用 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
与代码一起使用的解决方法,它使用不同的包装对齐方式。
相关文章:
- vcpkg:指定结构成员对齐方式
- 如何在结构中组织成员以在对齐上浪费最少的空间
- 如何使派生的类成员对齐,以使第一个成员立即出现在基类的最后一个成员之后
- 对齐说明符:在类型 / 上 成员数据
- 对齐的成员变量和动态分配
- 结构对齐填充、最大填充大小和结构成员顺序
- 对齐构件的对齐结构为成员(C )
- C / GSOAP 2.8.2中的怪异结构成员对齐
- 堆分配变量的结构成员对齐
- 无法访问 std::vector 的 16 位对齐成员
- 内存对齐到结构-对齐大小等于最大成员大小
- 具有对齐成员的结构的c++对齐
- 具有对齐成员的对象的动态分配-可能的解决方案
- 运行时结构成员的对齐
- 在相同类型的数组成员之后对齐
- 在ARM上的c++结构成员对齐和封装要求
- c++根据结构大小或其成员之间的最大对齐要求进行对齐
- 结构成员和静态变量的对齐
- MSVC 2008 16字节结构成员对齐奇怪
- GCC中的结构成员对齐