1
在GCC编译器中调用#pragma pack()
时没有参数的对齐方式是什么?分类包装和对齐
此外,我经常看到,当我们使用placement new
创建对象时,class
经常被打包。这是什么原因?是否有必要这样做?
在GCC编译器中调用#pragma pack()
时没有参数的对齐方式是什么?分类包装和对齐
此外,我经常看到,当我们使用placement new
创建对象时,class
经常被打包。这是什么原因?是否有必要这样做?
的第一部分,你可能会不顾一切地使用谷歌:http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html
其次有可能是当你需要控制你的类的二进制格式。您可能需要管理的存储器和所述量的数据结构的实际二进制偏移:
struct
{
char c;
int i;
};
可使用8个字节的存储器或5个字节的内存,根据机器类型和编译包使用。
对于第一部分,这是否意味着我可以从代码中取出#pragma pack()? – leslieg 2011-05-05 04:16:39
取决于代码。如果代码中没有其他的杂注包,是 – 2011-05-05 04:21:19
感谢您的回复。假设我在一个.h文件中有多个类声明,这是否意味着如果在特定类之前设置#pragma pack(1),#pragma pack(1)下面的所有类都会使用它?所以我需要将其设置回#pragma pack()?如何在其他.h文件中声明类? – leslieg 2011-05-05 04:29:28