在给定函数变量的情况下,有没有办法将函数的名称作为字符串?例如,如果我有:
void function(int) func;
是否有一些函数x(),我可以得到:
x(func) == "func";
?我觉得使用mixins是可能的,但我对如何实现它感到困惑。
答案 0 :(得分:7)
func.stringof
是你需要的。
你也可以制作一个模板:
template Name(alias Func) { enum Name = Func.stringof; }
void func() { }
pragma(msg, Name!(func)); //prints func()
答案 1 :(得分:0)
我想到的最简单的解决方案:
您可以将其名称存储在字符串中,并在必要时mixin
编辑,例如:
string func_name = "func";
...
int param = 294;
mixin(func_name ~ "(" ~ to!string(param) ~ ")");