如果我从“Hello World!”中读取生成的C代码在Nim,我看到了这一行
STRING_LITERAL(TM_xLHv575t3PG1lB5wK05Xqg_2, "Hello world!", 12);
TM_xLHv575t3PG1lB5wK05Xqg_2
序列是如何创建的? Nim编译器实际上是从自身生成此名称,还是在转换为C时使用预定义的变量名称?
它使用模块信息的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