Луа не предназначен для такой работы.Взаимодействие Lua / C предназначено для сотрудничества ;не должно быть так, что C может делать все, что захочет.
Используя ваш пример, если у вас есть скрипт Lua, который должен принимать значение из C и возвращать это значение + 1, тогда вы пишете это вLua вот так:
local x = ... --Get the first parameter to the chunk.
return x + 1 --Adds 1 to the value and returns it.
Вы компилируете эту строку в кусок Lua и вызываете ее как функцию Lua.Вы передаете ему значение, которым хотите манипулировать, и получаете возвращаемое значение из стека Lua.
Идея , а не в том, что код C может просто проникнуть в скрипт Lua и вставить в него данныепроизвольно.Приведенный выше блок получает параметры от пользователя и предоставляет возвращаемые значения пользователю.Это типично, как С взаимодействует с Lua.
Да, вы можете записывать значения в глобальные переменные, и скрипт Lua может их читать, а также записывать свои «результаты» в глобальные переменные, которые читает внешний код.Но это не самый эффективный способ взаимодействия со скриптами.
Мне бы очень хотелось, чтобы у меня был способ автоматически перечислять все неинициализированные переменные
Этого нетв Lua как «неинициализированная переменная».Не так, как вы имеете в виду.
Да, есть глобалы.Но имеет ли значение глобальное значение , а не , что-то, что может контролировать скрипт Lua.В конце концов, глобальный глобальный ;Вы можете установить глобальную переменную из вне скрипта (например, см. lua_setglobal
).Если вы это сделаете, то скрипт, который читает из него, будет читать значение, которое вы установили.Но ничего об этом не знает.