代码之家  ›  专栏  ›  技术社区  ›  Niklas Rosencrantz

来自nim编译器的c字符串文本

nim c
  •  0
  • Niklas Rosencrantz  · 技术社区  · 5 年前

    如果我从“hello world!”在尼姆,我看到这条线

    STRING_LITERAL(TM_xLHv575t3PG1lB5wK05Xqg_2, "Hello world!", 12);

    顺序如何 TM_xLHv575t3PG1lB5wK05Xqg_2 创建?nim编译器实际上是从自身生成这个名称,还是在转换为c时对变量使用预定义的名称?

    0 回复  |  直到 5 年前
        1
  •  3
  •   oakad    5 年前

    它使用模块信息的md5散列作为基础来生成名称。这个过程主要局限于 compiler/cgen.nim 文件。

    实际名称来自这里: https://github.com/nim-lang/Nim/blob/d5da450100f35008df06ecf812f1eeabda05d285/compiler/cgen.nim#L233

    该名称的组件派生自以下模块参数: https://github.com/nim-lang/Nim/blob/d5da450100f35008df06ecf812f1eeabda05d285/compiler/cgen.nim#L1468