p10769a.c

来自「this is a gcc file, you can download it 」· C语言 代码 · 共 46 行

C
46
字号
// Special g++ Options: -Wno-pmf-conversions// prms-id: 10769#define PMF2PF(PMF) ((void (*)())(PMF))int ok = 0;class A {public:  void f1a() { ok += 3; }  void f1b() { ok += 5; }  void f2a() { ok += 7; }  void f2b() { }  static void (*table[2][2])();  void main();} a;void (*A::table[2][2])()  = { { PMF2PF(&A::f1a), PMF2PF(&A::f1b) },      { PMF2PF(&A::f2a), PMF2PF(&A::f1b) },  };voiddispatch (A *obj, int i, int j){  (*(void (*)(A *))A::table[i][j])(obj);}void A::main() {  dispatch (&a, 0, 0);  void (A::*mPtr)() = &A::f1a;  (*(void (*)(A*))PMF2PF(mPtr))(&a);  (*(void (*)(A*))PMF2PF(f2a))(&a); // gets bogus error XFAIL *-*-*}int main() {  a.A::main();  dispatch (&a, 0, 1);  void (A::*mPtr)() = &A::f1b;  (*(void (*)(A*))PMF2PF(a.*mPtr))(&a);  (*(void (*)(A*))PMF2PF(a.f2a))(&a); // gets bogus error XFAIL *-*-*  return ok != 3+3+5+5+7+7;}

⌨️ 快捷键说明

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