2010-03-31 28 views
32

Lua có hỗ trợ điều gì đó giống như macro __LINE__ của C, trả về số dòng mã hiện tại không? Tôi biết Lua có một built-in biến gọi là _G, nhưng tôi không thấy số dòng trong đó ...số dòng hiện tại trong Lua

Trả lời

45

Từ Lua sử dụng debug.getinfo, ví dụ:

local line = debug.getinfo(1).currentline 

Từ C sử dụng lua_getinfo đặc biệt (Điều này sẽ trả lại linenumber bên trong mã 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

Công việc trên có giống như thế này không ?: io.write ("Lỗi trên dòng" .. dòng) – qroberts

+1

Tính năng này có hoạt động trên Lua 5.3 không. Tôi đã nhận được lỗi vi phạm quyền truy cập trong Windows. Cũng làm việc cho các trường hợp khi thực hiện kịch bản như một tập tin và trong một biến (dofile và doscript cuộc gọi)? – TrustyCoder

+0

@TrustyCoder Tôi gặp vấn đề tương tự. Điều này chỉ hoạt động bên trong một C thực hiện một hàm lua. Nó không làm việc sau khi một pcall cố gắng để xem những gì đã đi sai, tôi đã nhận ngoại lệ quá. (Vì vậy, tôi đã thực hiện chức năng xử lý lỗi của tôi bao gồm thông tin này trong chuỗi lỗi của họ). –

Các vấn đề liên quan