2

I would like convert an array in D of the form:

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

I have a C function which takes a C variadic:

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

I could do:

foreach(str; arrayStr)
    func( str );

But this seems like hacking the C variadic and I would rather convert directly to C vararg,

How can I do this?

thanks

4

1 に答える 1

5

AD 配列は、長さとポインタから構成される構造体です。たとえば、D 文字列を "%.*s" としてフォーマットすることにより、printf に渡すことができます。

したがって、配列を C 関数の可変引数に渡すと、その可変引数で long int (長さ) と char[]* (ptr) が検出されます。

于 2011-11-23T13:13:20.837 に答える