易截截图软件、单文件、免安装、纯绿色、仅160KB

其实回调函数并不神秘 C/C++中回调函数初探

简介
  对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。
  什么是回调函数?
  简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。
  为什么要使用回调函数?
  因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。
  如果想知道回调函数在实际中有什么作用,先假设有这样一种情况,我们要编写一个库,它提供了某些排序算法的实现,如冒泡排序、快速排序、shell排序、shake排序等等,但为使库更加通用,不想在函数中嵌入排序逻辑,而让使用者来实现相应的逻辑;或者,想让库可用于多种数据类型(int、float、string),此时,该怎么办呢?可以使用函数指针,并进行回调。
  回调可用于通知机制,例如,有时要在程序中设置一个计时器,每到一定时间,程序会得到相应的通知,但通知机制的实现者对我们的程序一无所知。而此时,就需有一个特定原型的函数指针,用这个指针来进行回调,来通知我们的程序事件已经发生。实际上,SetTimer() API使用了一个回调函数来通知计时器,而且,万一没有提供回调函数,它还会把一个消息发往程序的消息队列。
  另一个使用回调机制的API函数是EnumWindow(),它枚举屏幕上所有的顶层窗口,为每个窗口调用一个程序提供的函数,并传递窗口的处理程序。如果被调用者返回一个值,就继续进行迭代,否则,退出。EnumWindow()并不关心被调用者在何处,也不关心被调用者用它传递的处理程序做了什么,它只关心返回值,因为基于返回值,它将继续执行或退出。
  不管怎么说,回调函数是继续自C语言的,因而,在C++中,应只在与C代码建立接口,或与已有的回调接口打交道时,才使用回调函数。除了上述情况,在C++中应使用虚拟方法或函数符(functor),而不是回调函数。
  一个简单的回调函数实现
  下面创建了一个sort.dll的动态链接库,它导出了一个名为CompareFunction的类型--typedef int (__stdcall *CompareFunction)(const byte*, const byte*),它就是回调函数的类型。另外,它也导出了两个方法:Bubblesort()和Quicksort(),这


相关文档:

console mode 中使用 C/C++ 编译器

jjhou.csdn.net里面有  
  --------------------------------------------------------------------------------  
   
  在   console   mode   中使用   C/C++   编译器  
  侯捷   1999.04.08  
   
    ......

VC2005中C运行时库选择不当导致的链接问题及解决方案

VC2005中C运行时库选择不当导致的链接问题及解决方案
 
在Microsoft Visual C++ 2005中,如果一个EXE主工程应用程序要使用一个或几个静态LIB库,那么链接时经常会遇到符号重复定义的错误,如果排除库不当又会遇到找不到某些符号的问题,如果强制使用 /force选项链接过去又可能发生一些意想不到的运行时问题。
  ......

读《C和指针》笔记摘要【6】

2010-04-09
第十五章    输入/输出函数
1、错误报告
perror函数     void perror( char const *message);
2、终止执行
void exit( int status );    原型定义于stdlib.h
其中status参数返回给操作系统,用于提示程序是否正常完成,这个值和main函数返回的整型状态 ......

java使用JNI调用C++函数

网上有了很多这样的文章,不过感觉并不是很全,我都东找西找才最终把JAVA调用c++给搞定。
下面引用了很多网上已经有的的内容,我在这里只是整合一次,让以后的朋友少走网路。
多说无益,具体如下:
作者:mykoma
假设所有文件都放在d:\
Step 1:
写JAVA文件
例如程序testdll.java,内容为:   
  ......

C图形函数解析

C语言中,图形函数大致可分为两类:字符模式函数和图形模式函数。本节我们练习使用字符模式函数。  
          使用字符模式函数应该在程序中联入conio.h头部文件。  
          下面是一些函数的作用  
  1)     void   &nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号