📄 vmihint.c
字号:
// Test rtti hint flags// Copyright (C) 2000 Free Software Foundation, Inc.// Contributed by Nathan Sidwell 3 Apr 2000 <nathan@nathan@codesourcery.com>#include <typeinfo>#if defined (__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100#include <cxxabi.h>struct A {int m;};struct A1vA : virtual A {int m;};struct A2vA : virtual A {int m;};struct A1A : A {int m;};struct A2A : A {int m;};struct B {int m;};struct C1 : B, virtual A {int m;};struct D1 : A1vA, A2vA {int m;};struct E1 : A1A, A2A {int m;};struct E2 : A1A, A2vA {int m;};struct F1 : A1A, A1vA, A2vA {int m;};struct P1 : protected A {int m;};struct P2 : B, P1 {int m;};using namespace abi;int expect (int flags, std::type_info const &info){ abi::__vmi_class_type_info const *ptr = dynamic_cast <abi::__vmi_class_type_info const *> (&info); if (!ptr) return 0; if (ptr->__flags != flags) return 0; return 1;}int main (){ if (! expect (0 | 8, typeid (C1))) return 1; if (! expect (2 | 8, typeid (D1))) return 2; if (! expect (1 | 8, typeid (E1))) return 3; if (! expect (1 | 8, typeid (E2))) return 4; if (! expect (3 | 8, typeid (F1))) return 5; if (!expect (4, typeid (P1))) return 6; if (!expect (12, typeid (P2))) return 7; return 0;}#elseint main (){ return 0;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -