回调函数的应用误区2(与原理相悖的回调函数)
2014-05-23 16:29
471 查看
研究了一段时间回调函数,越看越迷惑,分析并改进了从网上看到的几篇好文,看过后有了自己的看法。我也不知道这些跌跌撞撞的认识是否符合回调的真实原理,若有大侠能帮解惑,自当感激不尽。
下面的代码可以在Vs2008下编译并运行:
个人观点:
以下代码虽说是按照C/S,调用者/被调者的思路去设计回调函数的,但实际上整个代码里面缺少最关键一环:没有出现被调函数(即用回调函数做参数的函数),所以不符合回调函数的基本原理。
就把它当成c/s模式下的函数指针调用吧,或者不伦不类的函数指针调用,没有理解到回调函数的真正含义,这个误区你犯过了没?。
################dll.h################
#pragma once
typedef void (* CALLBACK)(int var);
extern CALLBACK g_pfunc;
extern void dll_register_callback();
################dll.cpp################
#include <stdio.h>
#include "dll.h"
CALLBACK g_pfunc = NULL;
//回调函数定义
void CallBackFunc(int var)
{
printf("[CallBackFunc]: data=%d\n", var);
}
//回调函数注册
void dll_register_callback()
{
g_pfunc = CallBackFunc;
}
################app.cpp################
#include <stdio.h>
#include "dll.h"
int main()
{
//register CALLBACK
dll_register_callback();
//run CALLBACK
(*g_pfunc)(20);
return 0;
}
下面的代码可以在Vs2008下编译并运行:
个人观点:
以下代码虽说是按照C/S,调用者/被调者的思路去设计回调函数的,但实际上整个代码里面缺少最关键一环:没有出现被调函数(即用回调函数做参数的函数),所以不符合回调函数的基本原理。
就把它当成c/s模式下的函数指针调用吧,或者不伦不类的函数指针调用,没有理解到回调函数的真正含义,这个误区你犯过了没?。
################dll.h################
#pragma once
typedef void (* CALLBACK)(int var);
extern CALLBACK g_pfunc;
extern void dll_register_callback();
################dll.cpp################
#include <stdio.h>
#include "dll.h"
CALLBACK g_pfunc = NULL;
//回调函数定义
void CallBackFunc(int var)
{
printf("[CallBackFunc]: data=%d\n", var);
}
//回调函数注册
void dll_register_callback()
{
g_pfunc = CallBackFunc;
}
################app.cpp################
#include <stdio.h>
#include "dll.h"
int main()
{
//register CALLBACK
dll_register_callback();
//run CALLBACK
(*g_pfunc)(20);
return 0;
}
相关文章推荐
- 回调函数的应用误区4(c/s OK版本回调小程序)
- 回调函数原理及应用实例
- 回调函数的应用误区1(原汁原味的函数指针应用)
- 《tar命令打包格式及组合find应用原理及误区详解》
- 回调函数的应用误区3(大彻大悟的回调小程序,例子的解释相当给力)
- IExtenderProvider接口与反射原理结合起来应用
- COM多线程原理与应用
- 素描原理在PS鼠绘实物中的应用
- COM多线程原理与应用
- PC/104模块Diamond-MM-AT的原理与应用
- GTK+ 2.0 教程--信号和回调函数的原理
- TCP三次握手应用及原理
- COM多线程原理与应用
- 正则表达式的原理和介绍,应用(概念篇)
- Windows NT Session 概念的原理与应用浅析 [1] 遍历并获取信息 [草稿]
- 与JUnit干杯 ---- JUnit框架的架构原理以及应用
- Windows NT Session 概念的原理与应用浅析 [1] 遍历并获取信息 [草稿]
- 深入分析基于VCL派生的ActiveX控件的实现原理及应用