有没有办法确定Lua函数在从C/C++代码调用它之前需要多少参数?
我看了看lua_Debug
和lua_getinfo
,但他们似乎并没有提供我所需要的.
看起来有点像我反对Lua的精神,但我真的想要证明我在Lua和C++之间的界面.当从Lua代码调用C++函数时,接口验证Lua提供了正确数量的参数,并且每个参数的类型都是正确的.如果发现参数a 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参考手册的 2.5.9节.
您可以在这里做的最好的事情是为Lua函数添加检查以验证您是否收到了您期望的参数.