// 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; | |
} |