macros - haxe:从haxe.macro.Position获取行号和行位置

标签 macros haxe

在 haxe 宏中,对于每个表达式,我们可以以 http://api.haxe.org/haxe/macro/Position.html 的形式获取它的位置。 :

 {
   file:String, // filename - relative to source path
   min:Int, // position of first character in file
   max:Int // position of last character in file
 }

我想获取最小和最大变量的行号和行位置。

我绝对可以通过打开文件来做到这一点

FileSystem.absolutePath(Context.resolvePath(posInfo.file));

并计算行号,但 haxe 已经这样做了,最好从编译器获取此信息。可能吗?

最佳答案

在当前版本的 Haxe 中,您可以使用 PositionTools.toLocation

class Macro {
    public static macro function log(args:Array<Expr>):Expr {
        var loc = PositionTools.toLocation(Context.currentPos());
        var locStr = loc.file + ":" + loc.range.start.line;
        args.unshift(macro $v{locStr});
        return macro SomeExtern.logFunc($a{args});
    }
}

Macro.log("hi!") 转换为 SomeExtern.logFunc("Main:5", "hi!")

关于macros - haxe:从haxe.macro.Position获取行号和行位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38077490/

相关文章:

c++ - 寻找一个 MACRO 将两个字符加在一起用于 switch cases

haxe - 如何在运行时获取haxe编译器版本

haxe - 将文件或文件夹压缩成 zip 文件?

c++ - 使用 Haxe C++ 的 OpenGL?

haxe - 如何判断接口(interface)是否实现?

delphi - 使用 DWScript 创建宏

c++ - 在 C++ 中定义简单宏时出错

c++ - C++ 中的宏参数求值

c - 宏定义格式错误的宏

c - 快速服务器端图像生成库?