D编译时变量同构数组

时间:2011-11-18 13:51:59

标签: d compile-time

D2.056

void f(string[] names...)
{
    foreach (name; names)
    {
        mixin("string " ~ name ~ " = name;");
    }
}

int main()
{
    f("a", "b");
    return 0;
}

为什么这不起作用?它抱怨'name'不是编译时可读的,但这是一个错误的陈述。 'names'的内容在编译时是已知的,因为它是{“a”,“b”};

我正在尝试与库进行绑定,并且必须定义传递的函数名称并指向库。

1 个答案:

答案 0 :(得分:1)

函数必须对编译和编译时执行都有效。显然f不可编辑。

根据您要实现的目标,您可以使names成为模板参数(这会使foreach成为静态),或者使f构建一个字符串并混合使用f呼叫网站的结果。