⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 empty2.c

📁 gcc-you can use this code to learn something about gcc, and inquire further into linux,
💻 C
字号:
// Build don't link:// Copyright (C) 2001 Free Software Foundation, Inc.// Contributed by Nathan Sidwell 12 Apr 2001 <nathan@codesourcery.com>// Check we deal with trailing empty base classes properlystruct A {};struct B1 : A {};struct B2 : A {};struct B3 : A {};struct B4 : A {};struct B5 : A {};struct B6 : A {};struct B7 : A {};struct B8 : A {};struct C1 : B1{  virtual void Foo () {};};struct C2 : B1, B2{  virtual void Foo () {};};struct C3 : B1, B2, B3{  virtual void Foo () {};};struct C4 : B1, B2, B3, B4{  virtual void Foo () {};};struct C5 : B1, B2, B3, B4, B5{  virtual void Foo () {};};struct C6 : B1, B2, B3, B4, B5, B6{  virtual void Foo () {};};struct C7 : B1, B2, B3, B4, B5, B6, B7{  virtual void Foo () {};};struct C8 : B1, B2, B3, B4, B5, B6, B7, B8{  virtual void Foo () {};};struct D1 : virtual C1 {};struct D2 : virtual C2 {};struct D3 : virtual C3 {};struct D4 : virtual C4 {};struct D5 : virtual C5 {};struct D6 : virtual C6 {};struct D7 : virtual C7 {};struct D8 : virtual C8 {};unsigned const nearly_empty_size = sizeof (D1);template <typename Cn, typename Dn> int Check (Dn const &ref){  if ((sizeof (Cn) <= nearly_empty_size)      != (static_cast <void const *> (&ref)	  == static_cast <Cn const *> (&ref)))    return 1;  return 0;}template <typename Bn, typename Cn> int Check (){  Cn c[2];  if (static_cast <A *> (static_cast <B1 *> (&c[1]))      == static_cast <A *> (static_cast <Bn *> (&c[0])))    return 1;  return 0;}  int main (){#if defined (__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100  if (Check<B1, C1> ())    return 1;  if (Check<B2, C2> ())    return 2;  if (Check<B3, C3> ())    return 3;  if (Check<B4, C4> ())    return 4;  if (Check<B5, C5> ())    return 5;  if (Check<B6, C6> ())    return 6;  if (Check<B7, C7> ())    return 7;  if (Check<B8, C8> ())    return 8;    if (Check<C1> (D1 ()))    return 11;  if (Check<C2> (D2 ()))    return 12;  if (Check<C3> (D3 ()))    return 13;  if (Check<C4> (D4 ()))    return 14;  if (Check<C5> (D5 ()))    return 15;  if (Check<C6> (D6 ()))    return 16;  if (Check<C7> (D7 ()))    return 17;  if (Check<C8> (D8 ()))    return 18;    if (sizeof (C2) == nearly_empty_size)    return 22;  if (sizeof (C3) == nearly_empty_size)    return 23;  if (sizeof (C4) == nearly_empty_size)    return 24;  if (sizeof (C5) == nearly_empty_size)    return 25;  if (sizeof (C6) == nearly_empty_size)    return 26;  if (sizeof (C7) == nearly_empty_size)    return 27;  if (sizeof (C8) == nearly_empty_size)    return 28;#endif  return 0;  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -