一个Lua脚本将我的C定义函数之一用作波纹管:
function lua_func()
local var = 5
-- Do some stuff here, possibly using var.
c_func(var)
-- Do other stuff here, that must not use var.
end
此C函数接受调用者已创建并执行所需功能的参数。
C函数的该参数必须是一次性的,即在C函数使用它之后,我不希望Lua脚本的其余部分可以再访问它。
我正在寻找C函数“使用”此参数的方法。要使用它,然后将其设置为nil
,因此它不再可用。
这可能吗?如果可以,怎么办?
答案 0 :(得分:3)
变种1:
function lua_func()
do
local var = 5
-- Do some stuff here, possibly using var.
c_func(var)
end
-- Do other stuff here, that must not use var.
end
变种2:
function lua_func()
local var_container = {5}
-- Do some stuff here, possibly using var.
c_func(var_container) -- it assigns nil to var_container[1] before exit
-- Do other stuff here, that must not use var.
end
变体3:
function lua_func()
local var = 5
local destructor = function() var = nil end
-- Do some stuff here, possibly using var.
c_func(var, destructor) -- it invokes destructor() before exit
-- Do other stuff here, that must not use var.
end