#pragma pack,模板类型和结构对齐
#pragma pack, template typedefs, and struct alignment
使用Visual Studio或gcc,如果我有
#pragma pack(push, 16)
typedef std::map<uint32_t, uint32_t> MyIntMap;
#pragma pack(pop)
之后:
#pragma pack(push, 8)
MyIntMap thisInstance;
#pragma pack(pop)
thisInstance的结构对齐是什么?也就是说,对于一个类型定义的模板类,pragma pack是在类型定义的位置生效还是在变量定义的位置生效?如果是后者,获得跨文件一致对齐的类型的好方法是什么?
在您的代码中,#pragma pack
将不起作用。它只在结构或类的定义周围有效时才做任何事情,而不是在类型定义或其他东西周围。对于变量的定义也没有任何影响。
您可以在这里看到用法:http://msdn.microsoft.com/en-us/library/2e70t5y1(v=VS.100).aspx
专:pack在看到编译后的第一个结构、联合或类声明时生效。包对定义没有影响。
相关文章:
- OPENCL结构对齐错误
- 数据结构对齐:为什么Char和STD :: String的数组不同
- interpret_cast和结构对齐
- 结构对齐填充、最大填充大小和结构成员顺序
- 与此类结构对齐是否以C 标准为标准
- 64位Windows API结构对齐导致命名管道上出现“拒绝访问”错误
- 如何检测/查找 64 位结构对齐问题
- 检索数据结构对齐信息
- C# 中的结构对齐
- 视觉C++中的结构对齐
- 为什么iOS中的结构对齐方式不同
- 内存对齐-结构的总大小是结构对齐的倍数,而不是处理大小
- 内存对齐到结构-对齐大小等于最大成员大小
- 结构对齐 C/C++
- C与C++结构对齐
- 警告 C4121 行为和结构对齐 (Visual Studio 2010)
- C/C++ 中的对象/结构对齐
- #pragma pack,模板类型和结构对齐
- Fscanf和结构对齐
- c++中的结构对齐和填充