C语言 回调函数

#include "stdafx.h"
#include "stdlib.h"

typedef void* (*STMPROC_GET_BUF_FUNC)(int *psdwLength, void *hMemHandle);

typedef int (*STMPROC_RTN_BUF_FUNC)(void *pRtpData, int sdwLength, void *hMemHandle);


typedef struct
{
    STMPROC_GET_BUF_FUNC  pGetBufFunc;          
    STMPROC_RTN_BUF_FUNC  pRtnBufFunc;

}VIDEO_REV;


int FunctionDiaoyong(VIDEO_REV   *pstSecRev,
                     STMPROC_GET_BUF_FUNC  pGetBufFunc,
                     STMPROC_RTN_BUF_FUNC  pRtnBufFunc)
{
    if ((NULL == pGetBufFunc) || (NULL == pRtnBufFunc))
    {
        printf("FunctionDiaoyong: input funx pointer is NULL!");
        return 1;
    }

    pstSecRev->pGetBufFunc = pGetBufFunc;
    pstSecRev->pRtnBufFunc = pRtnBufFunc;

    return 0;
}

void *funcA(int *psdwLength, void *hMemHandle)
{
 printf("funcA , %d \n", *psdwLength);
 void *pBuf = NULL;
 pBuf = (void *)malloc(2000);
 if (pBuf == NULL)
 {
  printf("funcA pBuf err");
 }
 return pBuf;
}

int funcB(void *pRtpData, int sdwLength, void *hMemHandle)
{
 printf("funcB");
 return 1;
}

 

//主函数

int _tmain(int argc, _TCHAR* argv[])
{
     int a = 10;
     int b = 15;
     void *sss;
     sss = (void *)malloc(12);
     if (sss == NULL)
     {
          printf("sss err");

         return 0;
     }

     VIDEO_REV  stSecRevPar;
   
    FunctionDiaoyong(&stSecRevPar,
                                  funcA,
                                  funcB);

 stSecRevPar.pGetBufFunc(&a, sss);
 stSecRevPar.pGetBufFunc(&b, sss);

 return 0;
}

 

 

运行后的结果:

funcA, 10

funcA, 15

               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值