2010-03-31 251 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