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)

KYSL 海康摄像头 8247 h9 isapi测试(libopdevsdk.so)

如何快速理解函数指针与回调函数?

C语言函数指针之回调函数

回调函数的理解

java用jna调用C语言dll接口中的回调函数怎么写