Получение данных XML через непрозрачный указатель - PullRequest
1 голос
/ 06 января 2012

У меня проблема с получением части сообщения в формате xml с использованием API вендора. Как пример того, что работает: getDestination (void * message, void * destination, void * size)

vendordestinationtype_t dest;
getDestination(msg_p, &dest, 16);
printf("Received message. (Destination: %s).\n", dest.dest);

производит: полученное сообщение. (Пункт назначения: какой-то пункт назначения).

Чтобы получить XML-часть сообщения, требуется функция getXmlPtr (void * msg, void ** xml_ptr, void * xml_length)

char ptr[10000];
int size;
getXmlPtr(msg_p, (void**)&ptr, &size);
printf("Received message. (XML: %s).\n", ptr);

Итак, вопрос в том, как мне объявить и передать ptr таким образом, чтобы я мог получить информацию xml (документация производителя действительно плохая), в основном это говорит о том, что аргумент должен быть указателем на указатель приложения на заполнить с указателем сообщения XML данных по возвращении. Программист может привести возвращенный пустой указатель к любой ссылке, подходящей для приложения.

Ответы [ 2 ]

0 голосов
/ 06 января 2012

void** означает, что вы передаете указатель по ссылке;предположительно, функция изменит это, чтобы указать, где хранятся данные XML.Поэтому вам нужен указатель, а не массив:

void * ptr;
int size;
getXMLPtr(msg_p, &ptr, &size);
0 голосов
/ 06 января 2012

Ну, вы объявляете указатель на void как указатель на void: void *ptr;.

...