回调函数编写和注重点
来源:互联网 发布:货物找车软件 编辑:程序博客网 时间:2024/05/29 08:28
#include <windows.h>#include <stdio.h>typedef void (__stdcall *connectcallback)(char* msg);void __stdcall testcallback(char* msg){ if(!strcmp(msg,"successful")) { printf("already conneted\n"); } else if(!strcmp(msg,"failure")) { printf("conneting fail\n"); }}int main(void){ StartVenoVPN("veno1","veno1",testcallback); //在startvenovpn里面某个条件下实现对callback调用;startvenovpn可以在一个线程里调用回调函数;在回调函数里面实现消息传递;}
写一个startvenovpn的函数就可以实现上面的代码。
回调函数和C++里面的虚函数有类似的作用,可以实现前人调用后人的代码也可后人调用前人的代码。
【完整详细示例】
可执行源码:
#include <windows.h>#include <stdio.h>/* 回调函数 */typedef void (*connectcallback)(char* msg);void testcallback(char* msg){ if(!strcmp(msg,"successful")) { printf("already conneted\n"); } else if(!strcmp(msg,"failure")) { printf("conneting fail\n"); }}void fun_callback(connectcallback c);void main(void){ fun_callback(testcallback);}void fun_callback(connectcallback a){ printf("call sucessful\n"); a("successful");}
这个程序里和上个代码段有相似之处也有不同之处。相似在于都使用了同一个内容的回调函数,然不知是否注意到,这两外函数定义的不同之处。这也是回调函数很容易定义出错的地方。
1. 回调函数的定义和回调指针的定义的参数应完全相同。
2. 回调函数的定义和回调指针的定义的返回值要完全相同,并包类型声明。如:__stdcall要同有同无
3. 回调函数定义为类成员函数时,类中声明要为static
- 回调函数编写和注重点
- 如何编写回调函数
- 编写js回调函数
- Java中回调函数编写
- C++ 编写回调函数步骤
- 回调函数的几点解释
- Javascript回调函数那点事
- 回调函数和委托
- 委托和回调函数
- 回调函数和枚举
- 计时器和回调函数
- 闭包性和回调函数
- AJAX和回调函数
- VB传入回调函数指针至VC编写的DLL函数中,应注意的几点
- JS 对于回调函数的理解,和常见的使用场景应用,使用注意点
- JS 对于回调函数的理解,和常见的使用场景应用,使用注意点
- MATLAB编写回调函数(部分 更新)
- Java 自定义回调函数(编写属于自己的SDK)
- VS2010 如何添加H文件目录和LIB目录
- ubuntu linux mysql 开发模式与连接编译
- 软件版本命名格式
- 建立一个不能打开的文件(占坑)---C语言高级API调用
- 用C查看系统任务管理器中运行的程序
- 回调函数编写和注重点
- 创建一个进程和两个管道,实现与进程通信
- 打开一个网页,以html代码保存于txt文件中
- error LNK2001: 无法解析的外部符号
- 怎么把下载的dll和def生成lib,以用于编程
- 常见两种LINK错误
- windows 调用带参数 exe
- 博士生传给硕士生的经验 (转载)这实在是一篇少走许多学习弯路的好文章
- 给IT新人的15点建议:苦逼程序员的辛酸反省与总结