Строковый литерал C от компилятора Nim - PullRequest
0 голосов
/ 19 февраля 2019

Если я читаю сгенерированный код C из "Hello World!"в Nim я вижу эту строку

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

Как создается последовательность TM_xLHv575t3PG1lB5wK05Xqg_2?Компилятор Nim фактически генерирует это имя из себя или использует предопределенные имена для переменных при переводе в C?

1 Ответ

0 голосов
/ 19 февраля 2019

Генерирует имена, используя 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

...