在C函数中修改Lua参数

时间:2019-04-02 10:11:11

标签: c lua

一个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,因此它不再可用。

这可能吗?如果可以,怎么办?

1 个答案:

答案 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