在C语言中调用lua实现的回调函数

本文介绍如何在C语言程序中保存并调用Lua脚本的回调函数。通过`save_callback`和`invoke_callback`函数,保存回调函数和参数的引用,使用`lua_ref`进行引用计数管理。在实际应用中,建议将引用与对象关联,避免使用全局变量。注意`lua_ref`的使用细节,确保回调函数能在适当的时候被正确调用和释放。
摘要由CSDN通过智能技术生成
在内嵌的lua代码中,想要实现以下功能:
function callback(n)
    print("function callback " .. n);
end;

save_callback(callback, "aaa")
invoke_callback() -- 这里打印出function callback aaa

save_callback(function(n)
    print("anonymous function callback " .. n);
end
, 1)
invoke_callback() -- 这里打印出anonymous function callback 1


即:save_callback函数传入回调函数对象和1个参数,然后在任意时刻使用保存的参数和函数对象进行回调。


以下是实现的C代码:


#include <lua.h>
#include <lauxlib.h>
int callback_indicie;
int param_indicie;

/* by superarhow, 2014/03/04 */

int save_callback(lua_State* L)
{
    param_indicie = lua_ref(L, 1);
    callback_indicie = lua_ref(L, 1);

    return 0;
}

int invoke_callback(lua_State* L)
{
    lu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值