2010-03-31 7 views
32

루아는 현재 코드 줄 번호를 반환하는 C의 __LINE__ 매크로와 같은 것을 지원합니까? 나는 루아는 특별한 내장 변수 _G라고,하지만 난 거기에 줄 번호가 표시되지 않습니다 ... 예를 들어, debug.getinfo를 사용루아의 현재 줄 번호

루아에서

답변

45

, C에서

local line = debug.getinfo(1).currentline 

사용 lua_getinfo를을 가지고 알고 (이 루아 코드 내부의 LINENUMBER를 반환합니다)

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".. 줄) – qroberts

+1

이 기능은 루아 5.3에서 작동합니까? Windows에서 액세스 위반 오류가 발생했습니다. 또한 스크립트를 파일 및 변수 (dofile 및 doscript 호출)로 실행할 때 작동합니다. – TrustyCoder

+0

@ TrustyCoder 같은 문제가있었습니다. 이것은 루아 함수의 C 구현 내에서만 작동합니다. 그것은 잘못 된 것을보기 위해 pcall을 시도한 후에도 작동하지 않습니다. 예외도 있습니다. (그래서 나는 내 함수 오류 처리기가이 정보를 오류 문자열에 포함시켰다.) –