如何在 Nim 的编译时 echo/print?

How to echo/print at compile time in Nim?

在处理编译时功能时,最好在编译时 echo 做一些事情。如果 echo 带有宏,则它已在编译时执行。但是是否也可以在编译时打印一些东西,例如从全球范围?我正在寻找类似 echoStatic 的函数:

echoStatic "Compiling 1. set of macros..."

# some macro definitions

echoStatic "Compiling 2. set of macros..."

# more macro definitions

不需要特别的echoStatic。这个用的通解来解决,就是用一个static块:

static:
  echo "Compiling 1. set of macros..."

# some macro definitions

static:
  echo "Compiling 2. set of macros..."

# more macro definitions

在 C、C++ 和 D 等语言中,您通常可以使用 pragma 来完成这项工作。这也适用于 Nim:

from strformat import `&`

const x = 3
{. hint: &"{$typeof(x)} x = {x}" .}  # <file location> Hint: int x = 3

它还会打印文件、行和列,这对编译时调试很有用。