gpt4 book ai didi

c++ - 有什么方法可以在 C/C++ 中以编程方式确定 Lua 函数需要多少个参数?

转载 作者:太空狗 更新时间:2023-10-29 19:45:09 25 4
gpt4 key购买 nike

有没有办法确定一个 Lua 函数在从 C/C++ 代码调用它之前需要多少个参数?

我查看了 lua_Debuglua_getinfo,但它们似乎没有提供我需要的东西。

我似乎有点违背 Lua 的精神,但我真的想证明我在 Lua 和 C++ 之间的接口(interface)。当从 Lua 代码调用 C++ 函数时,接口(interface)会验证 Lua 是否提供了正确数量的参数以及每个参数的类型是否正确。如果发现参数有问题,则会发出 lua_error

我希望以相反的方式进行类似的错误检查。当 C++ 调用 Lua 函数时,它至少应该检查 Lua 函数没有声明比必要更多的参数。

最佳答案

Lua 无法满足您的要求。

你可以像这样用一组参数定义一个 Lua 函数:

function f(a, b, c)
body
end

但是,Lua 对传递给该函数的参数数量没有限制。

这是有效的:

f(1,2,3,4,5)

忽略额外的参数。

这也是有效的:

f(1)

剩余的参数被分配为“nil”。

最后,您可以定义一个接受可变数量参数的函数:

function f(a, ...)

此时您可以将任意数量的参数传递给函数。

参见 Lua reference manual 的第 2.5.9 节.

您在这里可以做的最好的事情是向您的 Lua 函数添​​加检查以验证您收到了您期望的参数。

关于c++ - 有什么方法可以在 C/C++ 中以编程方式确定 Lua 函数需要多少个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/785202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com