65 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
// 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;
 | 
						|
}
 |