使用 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 处生效还是在变量定义处生效?如果是后者,什么是获得跨文件一致对齐的类型的好解决方法?
在您的代码中,#pragma pack
不会有任何影响。它仅在围绕结构或类的定义有效时才执行任何操作,而不是围绕 typedef 或任何其他内容。它对变量定义也没有任何影响。
您可以在这里查看用法:http://msdn.microsoft.com/en-us/library/2e70t5y1(v=VS.100).aspx http://msdn.microsoft.com/en-us/library/2e70t5y1(v=VS.100).aspx
具体来说:
pack 在看到编译指示后的第一个结构、联合或类声明处生效。 pack 对定义没有影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)