Как вы печатаете или записываете текущее имя модуля?

#d

Вопрос:

Я хочу напечатать имя модуля моего основного исходного файла в этом исходном файле. Я попробовал это:

 import std.stdio;
import std.traits; // moduleName template

int main(string[] args)
{
    writeln("The module name is: ",moduleName!moduleName);
    return 0;
}
 

Тем не менее, он печатает:

Имя модуля: std.черты

Ответ №1:

Описание шаблона имени модуля выглядит следующим образом:

Получите имя модуля (включая пакет) для данного символа.

Так moduleName!moduleName что следует отдавать std.traits .

Просто замените аргумент шаблона любым другим символом, чтобы получить имя модуля.

Например writeln(moduleName!main) .

Другой способ-использовать writeln(__MODULE__) .

Ответ №2:

Использование __MODULE__ -это правильный путь. Это специальный маркер типа __FILE__ и __LINE__ , что означает , что он будет расширен на сайте вызовов. См. Некоторые спецификации для примера.