64,637
社区成员
发帖
与我相关
我的任务
分享
typedef void (*pf)();
struct C
{
virtual void f(){
printf("weird\n");
}
};
int main()
{
C c1;
C* p=&c1;
pf* pvtable=(pf*)p;
pf func1=pvtable[0];
(*func1)();
return 0;
}
#include <stdio.h>
#if defined(__i386__) && !defined(JJ_CALLTYPE)
#if defined(_MSC_VER)
#define JJ_CALLTYPE __fastcall
#else
#define JJ_CALLTYPE __attribute__((fastcall))
#endif
#endif
#if !defined(JJ_CALLTYPE)
#define JJ_CALLTYPE
#endif
typedef void (JJ_CALLTYPE *pf)(struct C* j__thiz, int a, int b);
struct C
{
C() : j___i(10) {}
virtual void JJ_CALLTYPE f(int a, int b){
printf("weird %d\n", a + b + j___i);
}
int j___i;
};
int main()
{
C c1;
C* p=&c1;
pf* pvtable= *(pf**)p;
pf func1=pvtable[0];
(*func1)(p, 100, 200);
return 0;
}