Как преобразовать D-массив в C-переменную? - PullRequest
2 голосов
/ 23 ноября 2011

Я хотел бы преобразовать массив в D в форме:

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,

Как я могу это сделать?

спасибо

1 Ответ

5 голосов
/ 23 ноября 2011

Массив AD - это структура, состоящая из длины и указателя.Например, вы можете передать D-строку в printf, отформатировав ее как «%. * S».

Так что, если вы передадите свой массив в переменный аргумент функции C, он найдет long int (length)и символ [] * (ptr) в его значениях.

...