编译期的 define 编译指示

这里列出的编译指示可以用来在编译时接收来自 -d/-define 命令行参数的值。

当前提供了以下编译指示 (以后可能增加)。

编译指示描述
intdefine在编译时将 define 读取为整数类型
strdefine在编译时将 define 读取为字符串类型
booldefine在编译时将 define 读取为布尔类型
  1. const FooBar {.intdefine.}: int = 5
  2. echo FooBar
  1. nim c -d:FooBar=42 foobar.nim

在上述例子中,-d 标志在编译时覆盖 FooBar 的默认值,打印出 42。如果删除 -d:FooBar=42:option:,则使用默认值5。可以使用 defined(FooBar) 判断是否为它提供了值。

语法 -d:flag 实际上是 -d:flag=true 的简写。

这些指示还接受一个可选的字符串参数,用于限定定义名称。

  1. const FooBar {.intdefine: "package.FooBar".}: int = 5
  2. echo FooBar
  1. nim c -d:package.FooBar=42 foobar.nim

这有助于消除不同包中定义名称的歧义。

还请参阅 generic `define` pragma,该版本的指示可以基于常量值检测定义的类型。