除了描述nnkUInt16Lit
枚举变体和此AST表示42'i16 - nnkInt16Lit(intVal = 42)
之外,没有相关文档。
当我像使用常规nnkIntLit
一样使用它时,它会失败。
macro test(): stmt =
var n = newNimNode(nnkUInt16Lit)
n.intVal = 1
result = newLetStmt(ident("foo"), n)
test()
echo foo
这会出错:
无法找到字段
intVal
(这不是我的实际用法。这只是一个展示问题的演示。)
我在intVal
上尝试了不同的变体,但错误始终转为undeclared identifier
。我会使用parseExpr()
,但似乎$
上的int
proc在编译时不起作用。
我已经尝试查找NimNode
类型定义的源代码来检查它,但到目前为止无法找到它。
那么如何在宏中创建uint16
NimNode? p>
答案 0 :(得分:4)