📄 ptrflags.c
字号:
// Test rtti pointer flags// Copyright (C) 2000, 2002 Free Software Foundation, Inc.// Contributed by Nathan Sidwell 15 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 B;using namespace abi;int expect (int flags, std::type_info const &info){ abi::__pbase_type_info const *ptr = dynamic_cast <abi::__pbase_type_info const *> (&info); if (!ptr) return 0; if (ptr->__flags != flags) return 0; return 1;}int main (){ if (! expect (0, typeid (A *))) return 1; if (! expect (1, typeid (A const *))) return 2; if (! expect (2, typeid (A volatile *))) return 3; if (! expect (4, typeid (A *__restrict__ *))) return 4; if (! expect (0, typeid (int A::*))) return 5; if (! expect (0, typeid (int A::**))) return 6; if (! expect (8 | 0, typeid (B *))) return 11; if (! expect (8 | 1, typeid (B const *))) return 12; if (! expect (8 | 2, typeid (B volatile *))) return 13; if (! expect (8 | 4, typeid (B *__restrict__ *))) return 14; if (! expect (16 | 0, typeid (int B::*))) return 15; if (! expect (8 | 0, typeid (int B::**))) return 16; if (! expect (8 | 0, typeid (B A::*))) return 17; if (! expect (24, typeid (B B::*))) return 18; return 0;}#elseint main (){ return 0;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -