lua-эквивалент __LINE__ и __FILE__?

Мне очень нравятся __LINE__ и __FILE__ C... есть ли что-то подобное в lua? (Я считаю полезным отслеживать printf... чтобы знать, из какого файла и из какой строки исходит сообщение).

Спасибо!


lua
person anon    schedule 06.05.2010    source источник


Ответы (2)


function __FILE__() return debug.getinfo(2,'S').source end
function __LINE__() return debug.getinfo(2, 'l').currentline end

Непроверено, здесь.

person ChristopheD    schedule 06.05.2010
comment
Обратите внимание, что обычно не рекомендуется называть глобальные символы, начинающиеся с двойного подчеркивания. Такие имена обычно принадлежат разработчикам языка. - person Alexander Gladysh; 06.05.2010

Я использую что-то вроде этого для получения номера строки со стороны c:

int lua_getline(lua_State* L, int level) {
    lua_Debug ar;
    lua_getstack(L, level, &ar);
    lua_getinfo(L, "l", &ar);
    return ar.currentline;
}

Вызов lua_getinfo с "lS" заполнит исходное поле lua_Debug. struct, хотя это не всегда может быть имя файла IIRC.

person Nick Van Brunt    schedule 06.05.2010