我想了解更多关于对齐的信息。为什么 Microsoft 编译器 (Visual Studio 2012 Express) 抱怨以下代码片段的对齐?
__declspec(align(16)) class Foo
{
public:
virtual ~Foo() {}
virtual void bar() = 0;
};
这是编译器向我显示的警告:
warning C4324: 'Foo' : structure was padded due to __declspec(align())
该类是否具有任何虚拟方法甚至都没有关系。即使对于一个空类,编译器也会抱怨同样的警告信息。空类如何对齐?编译器如何填充这个类?