2010-03-31 40 views
32

Lua是否支持类似C的__LINE__宏,它返回当前代码行的编号?我知道Lua中有一个特殊的内置变量称为_G,但我看不出在那里行号...Lua中的当前行号

回答

45

从Lua使用debug.getinfo,例如,

local line = debug.getinfo(1).currentline 

从下使用lua_getinfo (这将返回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

请问上面的工作是这样的吗?: io.write(“Error on line”.. line) – qroberts 2013-03-01 14:04:42

+1

这是否适用于Lua 5.3。 Windows中出现访问冲突错误。在将脚本作为文件和变量(dofile和doscript调用)执行时也可以工作吗? – TrustyCoder 2017-03-04 15:13:27

+0

@TrustyCoder我有同样的问题。这只适用于lua函数的C实现。在pcall尝试查看错误之后它不工作,我也有例外。 (所以我让我的函数错误处理程序在他们的错误字符串中包含此信息)。 – 2017-07-12 20:11:55