如何在 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
它还会打印文件、行和列,这对编译时调试很有用。
在处理编译时功能时,最好在编译时 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
它还会打印文件、行和列,这对编译时调试很有用。