| // Compile with "cl /c /Zi /GR- ClassLayoutTest.cpp" |
| // Link with "link ClassLayoutTest.obj /debug /nodefaultlib /entry:main" |
| |
| namespace MembersTest { |
| class A { |
| public: |
| typedef int NestedTypedef; |
| enum NestedEnum { |
| NestedEnumValue1 |
| }; |
| |
| void MemberFunc() {} |
| |
| private: |
| int IntMemberVar; |
| double DoubleMemberVar; |
| }; |
| } |
| |
| namespace GlobalsTest { |
| int IntVar; |
| double DoubleVar; |
| |
| typedef int Typedef; |
| enum Enum { |
| Val1 |
| } EnumVar; |
| Typedef TypedefVar; |
| } |
| |
| namespace BaseClassTest { |
| class A {}; |
| class B : public virtual A {}; |
| class C : public virtual A {}; |
| class D : protected B, private C {}; |
| } |
| |
| namespace UdtKindTest { |
| struct A {}; |
| class B {}; |
| union C {}; |
| } |
| |
| namespace BitFieldTest { |
| struct A { |
| int Bits1 : 1; |
| int Bits2 : 2; |
| int Bits3 : 3; |
| int Bits4 : 4; |
| int Bits22 : 22; |
| int Offset0x04; |
| }; |
| }; |
| |
| int main(int argc, char **argv) { |
| MembersTest::A v1; |
| v1.MemberFunc(); |
| BaseClassTest::D v2; |
| UdtKindTest::A v3; |
| UdtKindTest::B v4; |
| UdtKindTest::C v5; |
| BitFieldTest::A v7; |
| return 0; |
| } |