如何向lua回调函数 带参数中传参数

怎么样才能传多个参数给signal函数的回调函数?
怎么样才能传多个参数给signal函数的回调函数?
昵称: cascle &时间:
昵称: unistd &时间:
这肯定不行,,编译直接不通过。。。。。
可以用全局变量来传递,,
unistd 发表于
& & 能说的清楚点吗?怎么用全局变量?
昵称: cascle &时间:
昵称: cjaizss &时间:
复制代码应该是不能传递多个参数的!
昵称: ubuntuer &时间:
你理解了signal的那个回调函数的参数意义吗?
cjaizss 发表于
这个到知道,回调函数的定义貌似只能接收一个int型的参数吧,现在我想让他接收多个其他类型的参数
昵称: cascle &时间:
这个到知道,回调函数的定义貌似只能接收一个int型的参数吧,现在我想让他接收多个其他类型的参数
cascle 发表于
& & 接受其他类型的参数拿来干嘛???
昵称: cjaizss &时间:
昵称: cascle &时间:
昵称: cascle &时间:
复制代码需要获得一块内容同layout的可执行内存。 方法有很多。
然后在这块内存上弄来弄去, 最后将它作为一个函数指针调用, 就ok了。
获得可执行内存的方法:
1. 关闭数据执行保护
2. 提升, VirtualProtect, mprotect
3. 分配, VirtualAlloc, mmap
昵称: OwnWaterloo &时间:
昵称: unistd &时间:
昵称: OwnWaterloo &时间:
昵称: pengjianbokobe &时间:
昵称: pengjianbokobe &时间:
昵称: OwnWaterloo &时间:
昵称: masonzhang &时间:
昵称: the_classic_dig &时间:
昵称: flw &时间:如何将参数传递给$.post的回调函数中?jquery中的$.post的原型是$.post(url, data, callback)这里的data是要post的参数,而callback就是post之后的回调函数callback有两个参数,一个是服务器响应的data,另外一个参数是执行结果,成功或者失败。我有一个需求,如下:{ &
var usetopost &
$.post getA{ &
usetopost = A; &
$.post B(usetopost){ &
提交usetopost的值 &
}}这里存在一个问题,就是执行了post getA后,回调函数还没执行,所以usetopost还没有赋值,下面的post B就执行了。我如何能使post getA的回调函数执行后再执行post B?我用了下面这个方法 &
$.post getA{ &
usetopost = A; &
这里还需要使用到B,但是测试的时候,发现这个B是post getA里的局部变量,并不是前面定义的B &
$.post B(usetopost){ &
提交usetopost的值 &
如果是使用上面这个办法,我的疑问就是如何将前面定义的B传递给post getA,因为$.post的回调函数中的参数只有服务器返回的参数和失败或者成功的标记,所以这个方法就是行不通的。
$.post(&1.php&, function(usetopost){
$.post(&2.php xx=&+usetopost, function(date){
//这样必须返回1.php值后才运行2.php
martin0822
用.ajax()方法,执行模式设置为同步模式:  JScript code  $.ajax({
type: 'POST',
url: 'url',
data: 'data',
async: false,
success: callback
martin1961
回答3:$.get和$.post都是异步方式的执行。这个在任何一本Jq教程上都会讲到,所以还是用ajax原型$.ajax,里面的async:false,这样就是同步执行了。。1180人阅读
成员函数名不能作为参数传递,否则会发生错误,因为里面隐藏着一个this 指针
& & &回调函数,就是由你自己写的。你需要调用另外一个函数,而这个函数的其中一个参数,就是你的这个回调函数名。这样,系统在必要的时候,就会调用你写的回调函数,这样你就可以在回调函数里完成你要做的事。
& & 模块A有一个函数foo,它向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让A作出相应反应。&那么我们就把foo称为回调函数。
& & 我的理解:(有待再看)
& &&eg:s.dll有一个函数s_create,向柜台服务器传递ServerCallBack函数的地址,之后,在柜台服务器里发生了某种事情后,通过s.dll的s_create里传递过来的ServerCallBack函数的地址,来调用ServerCallBack函数,通知s.dll发生了什么事情,让s.dll做出反应
& & 比如,客户端发出了某个请求给s.dll,然后s.dll进行一系列通信工作,当s.dll调用s_create时,s.dll回停一会,先去做另外一件事件,就是执行ServerCallBack函数(该函数的指针是作为s_create的参数形式存在的),ServerCallBack执行了各种通信的消息处理之后,返回到s_create。继续向下进行
&&&& 回调函数是一个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。回调函数在使用的场合很多,比如Hook回调函数:MouseProc,GetMsgProc以及EnumWindows,DrawState的回调函数等等,还有很多系统级的回调过程。本文不准备介绍这些函数和过程,而是谈谈实现自己的回调函数的一些经验。
&&&& 之所以产生使用回调函数这个想法,是因为现在使用VC和Delphi混合编程,用VC写的一个DLL程序进行一些时间比较长的异步工作,工作完成之后,需 要通知使用DLL的应用程序:某些事件已经完成,请处理事件的后续部分。开始想过使用同步对象,文件影射,消息等实现DLL函数到应用程序的通知,后来突 然想到可不可以在应用程序端先写一个函数,等需要处理后续事宜的时候,在DLL里直接调用这个函数即可。&&
&&&&& 于是就动手,写了个回调函数的原形。在VC和 Delphi里都进行了
一:声明回调函数类型。
&&&&&& vc版
&&&&&&&&&&&&& typedef int (WINAPI *PFCALLBACK)(int Param1,int Param2) ;
二:声明回调函数原形
&&&&&& 声明函数原形
&&&&& vc版
&&&&&&&&&&&&&& int WINAPI CBFunc(int Param1,int Param2);
三: 回调函数调用调用者
&&&&&&&& 调用回调函数的函数我把它放到了DLL里,这是一个很简单的VC生成的WIN32 DLL.并使用DEF文件输出其函数名 TestCallBack。实现如下:
&&&&&&&&&&&&& PFCALLBACK& gCallBack=0;
&&&&&&&&&&& void WINAPI TestCallBack(PFCALLBACK Func)
&&&&&&&&&& {
&&&&&&&&&&&&&&&&& if(Func==NULL)
&&&&&&&&&&&&&&&&& gCallBack=F
&&&&&&&&&&&&&&&&& DWORD ThreadID=0;
&&&&&&&&&&&&&&&&& HANDLE hThread = CreateThread(& NULL,& NULL,& Thread1,&& LPVOID(0),&&&&&&&&& &ThreadID );
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&& }
&&&&& 此函数的工作把传入的 PFCALLBACK Func参数保存起来等待使用,并且启动一个线程。声明了一个函数指针PFCALLBACK gCallBack保存传入的函数地址。
四: 回调函数如何被使用:
&&&&&&&&&&TestCallBack函数被调用后,启动了一个线程,作为演示,线程人为的进行了延时处理,并且把线程运行的过程打印在屏幕上.
五:万事具备
&&&&&&& 使用vc和Delphi各建立了一个工程,编写回调函数的实现部分
&&&&&& VC版
&&&& int WINAPI CBFunc(int Param1,int Param2)
&&&&&&&&&&&&&& int res= Param1+Param2;
&&&&&&&&&&&& TCHAR Buffer[256]=&&;
&&&&&&&&&&& sprintf(Buffer,&callback result = %d&,res);
&&&&&&&&&&& MessageBox(NULL,Buffer,&Testing&,MB_OK);& //演示回调函数被调用
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& }&&
&&&&&& 使用静态连接的方法连接DLL里的出口函数 TestCallBack,在工程里添加 Button( 对于Delphi的工程,还需要在Form1上放一个Edit控件,默认名为Edit1)。
&&&&&&& 响应ButtonClick事件调用 TestCallBack
&&&&&&&&&&&&& TestCallBack(CBFunc) //函数的参数CBFunc为回调函数的地址
&&&&&&& 函数调用创建线程后立刻返回,应用程序可以同时干别的事情去了。现在可以看到屏幕上不停的显示字符串,表示dll里创建的线程运行正常。一会之后,线程延 时部分结束结束,vc的应用程序弹出MessageBox,表示回调函数被调用并显示根据Param1,Param2运算的结果,Delphi的程序 edit控件里的文本则被改写成Param1,Param2 的运算结果。
&&&&&&& 可见使用回调函数的编程模式,可以根据不同的需求传递不同的回调函数地址,或者定义各种回调函数的原形(同时也需要改变使用回调函数的参数和返回值约 定),实现多种回调事件处理,可以使程序的控制灵活多变,也是一种高效率的,清晰的程序模块之间的耦合方式。在一些异步或复杂的程序系统里尤其有用 -- 你可以在一个模块(如DLL)里专心实现模块核心的业务流程和功能,外围的扩展的功能只给出一个回调函数的接口,通过调用其他模块传递过来的回调函数地址的方式,将后续处理无缝地交给另一个模块,随它按自定义的方式处理。
&&&&& 本文的例子使用了在DLL里的多线程延时后调用回调函数的方式,只是为了突出一下回调函数的效果,其实只要是在本进程之内,都可以随你高兴可以把函数地址传递来传递去,当成回调函数使用。
&&&&&& 这样的编程模式原理非常简单单一:就是把函数也看成一个指针一个地址来调用,没有什么别的复杂的东西,仅仅是编程里的一个小技巧。至于回调函数模式究竟能为你带来多少好处,就看你是否使用,如何使用这种编程模式了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:101910次
积分:1580
积分:1580
排名:千里之外
原创:26篇
转载:220篇
(1)(18)(15)(11)(13)(2)(27)(104)(29)(8)(15)(1)(1)(1)&>&&>&&>&&>&向 SetTimer的回调函数传递参数
向 SetTimer的回调函数传递参数
上传大小:46KB
定时器事件的响应函数,即 VOID CALLBACK TimerProc() 不是由用户程序自己调用的,而是根据时钟事件借由操作系统内核调用的;那么,如何利用这些形式参数,传递程序逻辑处理所需要的参数呢?本文给出一个解决方案,非常好。该解决方案解决了我在实际工程中的切实问题;无需再将需传递的参数声明为丑丑的、破坏封装性的公有变量了。 希望该文可以惠及更多混迹数据码世界的码工们!
嵌到我的页面
<input type="text" value="">
综合评分:0(0位用户评分)
所需积分:1
下载次数:6
审核通过送C币
创建者:pizer
创建者:yifei99
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
向 SetTimer的回调函数传递参数
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:

我要回帖

更多关于 回调函数的参数 的文章

 

随机推荐