#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__
, что означает , что он будет расширен на сайте вызовов. См. Некоторые спецификации для примера.