使用 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的结构对齐是什么?也就是说,对于 typedef 的模板类,pragma pack 是在 typedef 的位置生效还是在变量定义的位置生效?如果是后者,那么获得跨文件对齐的类型有什么好的解决方法?