如何将D数组转换为C variadic?

时间:2011-11-23 11:56:23

标签: d variadic phobos

我想在D格式中转换数组:

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

我有一个C函数,它采用C变量:

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

我能做到:

foreach(str; arrayStr)
    func( str );

但这似乎是攻击C变量,我宁愿直接转换为C vararg,

我该怎么做?

感谢

1 个答案:

答案 0 :(得分:5)

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

因此,如果将数组传递给C函数的variadic参数,它将在其varargs中找到long int(length)和char [] *(ptr)。