【问题标题】:lua equiv of __LINE__ and __FILE__?lua 相当于 __LINE__ 和 __FILE__?
【发布时间】:2010-05-07 04:53:38
【问题描述】:

我真的很喜欢 C 的 __LINE____FILE__ ... lua 提供类似的东西吗? (我发现它有助于追踪 printf 的 ... 以了解消息来自哪个文件和哪一行)。

谢谢!

【问题讨论】:

    标签: lua


    【解决方案1】:
    function __FILE__() return debug.getinfo(2,'S').source end
    function __LINE__() return debug.getinfo(2, 'l').currentline end
    

    未经测试,credit goes here

    【讨论】:

    • 请注意,以双下划线开头命名全局符号通常是个坏主意。这些名称通常属于语言实现者。
    【解决方案2】:

    我使用这样的东西从 c 端获取行号:

    int lua_getline(lua_State* L, int level) {
        lua_Debug ar;
        lua_getstack(L, level, &ar);
        lua_getinfo(L, "l", &ar);
        return ar.currentline;
    }
    

    使用 "lS" 调用 lua_getinfo 将填充 lua_Debug 结构的源字段,尽管它可能并不总是文件名 IIRC。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 2011-05-24
      相关资源
      最近更新 更多