2010-03-31 24 views
32

Lua, geçerli kod satırı sayısını döndüren C'nin __LINE__ makrosu gibi bir şeyi destekliyor mu? Ben Lua özel yerleşik değişken _G denilen ama orada satır numarasını görmüyorum ... örneğin debug.getinfo kullanılarakgeçerli hat numarası

Lua itibaren

cevap

45

, C itibaren

local line = debug.getinfo(1).currentline 

kullanarak lua_getinfo olduğunu biliyorum (Bu lua kodu içinde linenumber dönecektir)

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

Yukarıdaki gibi çalışır mıyım ?: io.write ("Satırdaki hata" .. satır) – qroberts

+1

Bu, Lua 5.3 üzerinde çalışır. Windows'da erişim ihlali hatalarını alıyordum. Ayrıca, bir dosya ve bir değişken olarak betik yürütülürken (dofile ve doscript çağrıları) durumlar için de çalışır mı? – TrustyCoder

+0

@TrustyCoder Aynı sorun vardı. Bu sadece bir lua fonksiyonunun bir C uygulamasında çalışır. Neyin yanlış gittiğini görmek için bir pcall çalıştıktan sonra çalışmıyor, istisnalar da var. (Bu yüzden işlevlerimi yaptım hata işleyicileri bu bilgiyi kendi hata dizelerinde içerir). –