D2.056
void f(string[] names...)
{
foreach (name; names)
{
mixin("string " ~ name ~ " = name;");
}
}
int main()
{
f("a", "b");
return 0;
}
为什么这不起作用?它抱怨'name‘不是编译时可读的,但这是一个错误的声明。'names‘的内容在编译时是已知的,因为它是{"a","b"};
我正在尝试绑定一个库,传递的函数名必须定义并指向该库。
发布于 2011-11-18 14:16:24
函数必须对编译和编译时执行都有效。显然,f
是不可编译的。
根据您试图实现的目标,您可以将names
作为模板参数(这将使foreach
成为静态参数),或者让f
构建一个字符串并在f
的调用点混合结果。
https://stackoverflow.com/questions/8183470
复制