在宏内部我想获取宏调用者的源文件和位置。
类似:
(defmacro my-macro []
`(prn ~*source-position*))
其中
*source-position*
包含有关在评估宏时当前编译的文件的源位置的信息。
调用此宏时,应打印调用者的源文件、行和列。
使用
&form
符号可获取宏展开时原始形状的位置。
=>(defmacro m [x] `(prn '~(meta &form)))
#'user/m
=>(m (+ 1 3 3))
{:line 1, :column 1}
nil
并且 source-path 应该为您提供文件名。