C语言回调函数demo(帮助理解)以海康isapiExternDemo回调函数为例
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言回调函数demo(帮助理解)以海康isapiExternDemo回调函数为例相关的知识,希望对你有一定的参考价值。
参考文章:c语言指针回调函数最全demo实例(简单明了一看就会)
回更
20220303
\\demo\\base\\isapiExternDemo\\isapiExternDemo.c
这边海康定义了一个回调函数
// 2. register callback functions(注册回调函数)
if(op_devsdk_ok != opdevsdk_protoexten_set_callback((opdevsdk_protoexten_callback*)g_opdevsdk_protoexten_context, 15))
printf("opdevsdk_protoexten_set_callback failed");
return 0;
op_devsdk_errno_code opdevsdk_protoexten_set_callback(opdevsdk_protoexten_callback *opdevsdk_protoexten_cb, int size); //为ISAPI协议外部设置回调函数(这个int size干嘛用的?size就是结构体指针opdevsdk_protoexten_cb后面还有多少个同样的结构体,可以用*(p+i)访问;主要它传进来的第一个参数可能是个数组的头指针,所以第二个参数就是这个数组的大小)
typedef struct //
char *url_suffix; ///< remain path for url when registerging function //注册函数时保留url的路径
int connect_type; ///< 0-shot connect��1- long connect //短链接(0)还是长链接(1)
/// @param _req_des: http request //http请求
/// @param _resp_des: http response //http响应
/// @return op_devsdk_errno_code
op_devsdk_errno_code (*opdevsdk_protoexten_data_callback)(OP_DEVSDK_REQ_DES *_req_des, OP_DEVSDK_RESP_DES *_resp_des); //定义一个回调函数
opdevsdk_protoexten_callback;
op_devsdk_errno_code (*opdevsdk_protoexten_data_callback)(OP_DEVSDK_REQ_DES *_req_des, OP_DEVSDK_RESP_DES *_resp_des);
其中op_devsdk_errno_code
是回调函数返回值, OP_DEVSDK_REQ_DES *_req_des, OP_DEVSDK_RESP_DES *_resp_des
是回调函数的参数
(需要被注册的回调函数只需满足这样的返回值参数结构即可)
回调函数的结构比较特殊,它最重要的元素是返回值
和参数
回调函数小demo
#pragma warning(disable : 4996)
#include <stdio.h>
#include <stdlib.h>
void (*call_back)(int a, int b); //创建回调函数
void test(int* a, int size)
for (int i = 0; i < size; i++)
printf("%d\\n", *(a+i));
int main()
int a[5] = 1,2,3,4,5 ;
//printf("%d\\n",a[1]);
//test(a,5);
call_back = test; //注册(绑定)回调函数
call_back(a, 5);
return(0);
VS运行结果:
1
2
3
4
5
以上是关于C语言回调函数demo(帮助理解)以海康isapiExternDemo回调函数为例的主要内容,如果未能解决你的问题,请参考以下文章
KYSL 海康摄像头 8247 h9 isapi测试(libopdevsdk.so)