D2.056
void f(string[] names...)
{
foreach (name; names)
{
mixin("string " ~ name ~ " = name;");
}
}
int main()
{
f("a", "b");
return 0;
}
为什么这不起作用?它抱怨'name'不是编译时可读的,但这是一个错误的陈述。 'names'的内容在编译时是已知的,因为它是{“a”,“b”};
我正在尝试与库进行绑定,并且必须定义传递的函数名称并指向库。
答案 0 :(得分:1)
函数必须对编译和编译时执行都有效。显然f
不可编辑。
根据您要实现的目标,您可以使names
成为模板参数(这会使foreach
成为静态),或者使f
构建一个字符串并混合使用f
呼叫网站的结果。