2010-03-31 8 views
32

Lua supporta qualcosa come la macro __LINE__ di C, che restituisce il numero della riga di codice corrente? So Lua ha uno speciale incorporato variabile chiamata _G, ma non vedo il numero di riga in là ...numero di riga corrente in Lua

risposta

45

Da Lua usando debug.getinfo, ad esempio,

local line = debug.getinfo(1).currentline 

Da C utilizzando lua_getinfo (Ciò restituirà la linenumber interno codice lua)

lua_Debug ar; 
    lua_getstack(L, 1, &ar); 
    lua_getinfo(L, "nSl", &ar); 
    int line = ar.currentline 

http://www.lua.org/manual/5.1/manual.html#lua_getinfo

http://www.lua.org/manual/5.1/manual.html#pdf-debug.getinfo

+0

Il funzionamento sopra dovrebbe essere così ?: io.write ("Errore in linea" .. riga) – qroberts

+1

Funziona su Lua 5.3. Stavo ricevendo errori di violazione di accesso in Windows. Funziona anche nei casi in cui si esegue lo script come file e in una variabile (chiamate dofile e doscript)? – TrustyCoder

+0

@TrustyCoder Ho avuto lo stesso problema. Funziona solo all'interno dell'implementazione C di una funzione lua. Non funziona dopo che un pc chiede di vedere cosa è andato storto, ho avuto anche delle eccezioni. (Così ho fatto in modo che i miei gestori di errori di funzione includessero queste informazioni nella loro stringa di errore). –

Problemi correlati