2010-05-06 10 views
10

Bardzo podoba mi się C __LINE__ i __FILE__ ... czy lua zapewnia coś podobnego? (Uważam, że przydaje się do śledzenia plików printf ..., aby wiedzieć, który plik i której linii pochodzi wiadomość).lua equiv z __LINE__ i __FILE__?

Dzięki!

Odpowiedz

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

Nietestowane, credit goes here.

+2

Należy zauważyć, że generalnie trudno jest nazwać symbole globalne zaczynając od podwójnego podkreślenia. Takie nazwy zwykle należą do implementatorów językowych. –

2

używam coś takiego uzyskania numer wiersza z boku 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; 
} 

Wywołanie lua_getinfo z „ls” wypełni pola źródłowego struktury lua_Debug choć nie zawsze może być nazwa pliku IIRC.