与 gcc 中的等效项相比,是否有一种方法可以使用编译器标志在 msvc 下创建相同的基类和派生类的内存布局?我使用 VS2010 并将其与 GCC 4.1.1 进行比较
所以
#if define _MSVC
// window
DALIGN(A,B) __declspec(align(A)) B
#else
// GCC
DALIGN(A,B) B __attribute__((aligned(A)))
#endif
class A
{
DALIGN(CVector V,16);
int a;
}
class B : public A
{
int b;
}
A 是 16 字节对齐的,使其为 0x20(32) B 也是 16 字节对齐的,但在 GCC 上也是 0x20(32),但在 msvc 上是 0x30(48)
有没有办法强制 msvc 像 GCC 一样打包数据?
这样做的原因:我创建数据并将其直接加载到不同平台上的类中。如果我可以在两个平台上使用完全相同的数据布局,那就太好了。(是的,两个平台上的字节序相同)