2010-05-06 16 views
10

Me gusta mucho C's __LINE__ y __FILE__ ... ¿proporciona lua algo similar? (Me resulta útil para rastrear las impresiones ... para saber qué archivo y de qué línea proviene el mensaje).lua equiv de __LINE__ y __FILE__?

Gracias!

Respuesta

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

Untested, credit goes here.

+2

Tenga en cuenta que, en general, es una mala idea nombrar símbolos globales comenzando con doble guion bajo. Tales nombres generalmente pertenecen a los implementadores del lenguaje. –

2

utilizo algo como esto para obtener el número de línea desde el lado 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; 
} 

Calling lua_getinfo con "LS" llenará el campo de origen de la estructura lua_Debug a pesar de que no siempre puede ser un nombre de archivo IIRC.