来自Nim编译器的C字符串文字

问题描述 投票:1回答:1

如果我从“Hello World!”中读取生成的C代码在Nim,我看到了这一行

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

TM_xLHv575t3PG1lB5wK05Xqg_2序列是如何创建的? Nim编译器实际上是从自身生成此名称,还是在转换为C时使用预定义的变量名称?

c nim
1个回答
3
投票

它使用模块信息的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

© www.soinside.com 2019 - 2024. All rights reserved.