我是新手,大虾们多多指教不定参数数量、类型的函数指针申明可以是 int (*p)(...)但是我要做的是
比如a数组(long)有所有参数的指针
b数组用1、2、3、4.。。对应a[]中的指针指向的数据类型
(比如1对应int,2对应long)已知a数组,b数组,函数指针
那么如何回调这个函数呢

解决方案 »

  1.   

    调用遵从__cdecl规则,调用方负责清栈,将参数从右至左入栈,完了以后清栈。例:用函数指针实现printf("%d %d", 1, 2)的调用
    [code=C/C++] int (*p)(const char *, ...);
    p = &printf;
    __asm push 2;  //右数第一个参数入栈
    __asm push 1;  //右数第二个参数入栈
    (*p)("%d %d");
    __asm add esp,8;  //push了n次,就对esp加4*n[code]
      

  2.   

    int (*p)(const char *, ...);
    p = &printf;
    __asm push 2; //右数第一个参数入栈
    __asm push 1; //右数第二个参数入栈
    (*p)("%d %d");
    __asm add esp,8; //push了n次,就对esp加4*n
      

  3.   

    谢谢!!
    如果是stdcall呢
    (我想尝试vb的回调)
      

  4.   

    对汇编一窍不通啊
    __asm push 如果要压入12324543654这样一个long数据可以吗
      

  5.   

    stdcall是调用方处理栈,无法实现
      

  6.   

    stdcall不能使用可变参数push是压入一个32位数到栈,只要在此范围的数就可以一次压入