C & Lua: luaL_dostring возвращаемое значение - PullRequest
3 голосов
/ 09 сентября 2010

в моем C-файле я называю luaL_dostring так:

luaL_dostring(L, "return 'somestring'");

Как мне прочитать это возвращаемое значение в C после этой строки?

Спасибо.

Редактировать: Спасибо за помощь.

Я хотел бы добавить это, чтобы удалить элемент после извлечения, вы используете:

lua_pop(L, 1);

Ответы [ 2 ]

6 голосов
/ 09 сентября 2010

Значение остается в стеке Lua.Чтобы извлечь значение, используйте одну из функций lua_toXXXX с -1 в качестве аргумента индекса (-1 относится к вершине стека).Или используйте lua_gettop(), чтобы получить размер стека.

В вашем случае используйте это:

luaL_dostring(L, "return 'somestring'");
const char * str = lua_tostring(L, -1);
1 голос
/ 07 ноября 2015

В документации сказано, что luaL_dostring имеет возвращаемое значение, равное нулю в случае успеха:

luaL_dostring

Загружает и запускает заданную строку. Он определяется как следующий макрос:

 (luaL_loadstring(L, str) || lua_pcall(L, 0, LUA_MULTRET, 0))

Возвращает 0, если ошибок нет, или 1 в случае ошибок.

Надежный код должен проверять возвращаемое значение 0.

Строго говоря, макрос расширяется до логического значения, которое в случае C ++ равно true, если произошла ошибка. Это может быть важно в чем-то вроде юнит-теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...