2011-11-23 49 views
2

我想转换的阵列形式的d:如何将D数组转换为C variadic?

string[] arrayStr = [ "hi, "is fun", "use D programming" ]; 

我有一个C函数,它接受一个C可变参数:

void c_func(const char* format, ...); 

我能做到:

foreach(str; arrayStr) 
    func(str); 

但是,这似乎是黑客的C variadic,我宁愿直接转换为C vararg,

我该怎么做?

谢谢

+0

那么,你总是可以使用[libffi](http://sourceware.org/libffi/)来构建调用。 –

回答

5

一个D数组是一个由长度和指针组成的结构。例如,您可以将D字符串格式化为“%。* s”,将其传递给printf。

因此,如果您将数组传递给C函数的可变参数,它将在其可变参数中查找长整型(长度)和char [] *(ptr)。

+3

请注意,这可能不适用于x64。 –