Есть ли способ определить, сколько параметров выполняет функция Lua, прежде чем вызывать ее из кода C/C++?Есть ли способ программно определить в C/C++, сколько параметров ожидает функция Lua?
Я просмотрел lua_Debug
и lua_getinfo
, но они, похоже, не предоставляют то, что мне нужно.
Может показаться немного похожим на то, что я иду против духа Lua, но я действительно хочу пропустить доказательство интерфейса, который у меня есть между Lua и C++. Когда вызывается функция C++ из кода Lua, интерфейс проверяет, что Lua предоставил правильное количество аргументов, и тип каждого аргумента правильный. Если обнаружена проблема с аргументами, то выдается lua_error
.
Я бы хотел, чтобы аналогичная ошибка проверялась наоборот. Когда C++ вызывает функцию Lua, она должна хотя бы проверить, что функция Lua не объявляет больше параметров, чем это необходимо.
Ну, я сказал, что знаю, что я делаю, не в духе Lua :) С функциями, реализованными и вызванными полностью в Lua, он будет работать так, как вы говорите, однако то, что я хочу, - это способ упростить Lua/C++. Когда вы реализуете интерфейс C++ с использованием функций Lua (используя нашу обычную систему привязки Lua/C++), имеет смысл автоматически принудительно выполнять функции Lua, которые вызывают из C++, реализовать правильное количество аргументов. Тем не менее я подозреваю, что делать то, что я хочу, невозможно. Думал, я все равно прошу! –