月度归档:2013年09月

struct-pack内存对齐(gcc兼容vs内存对齐)

我们公司的游服消息是用结构体定义的,游服移到linux上麻烦大了,因为Vc++的结果体内存对齐方式与gcc的不同(具体不同google下,很多文章)而以前有些程序员偷懒没加#pragma pack去调整对齐,怎么办呢?其实vc++的cl编译器和gcc编译器都有全局调整内存对齐方式的开关。gcc在编译时加上-fpack-struct=n的开关就可以指定以n字节来对齐,而cl编译器的参数是-Zn,在visual studios中右键单击项目,选择properties-c/c++-code generation-struct memory alignment中选择对应的对齐方式即可。如果你想让gcc兼容vc++的默认的古怪的对齐方式可以在编译时加上参数-mms-bitfields