通过不透明指针获取xml数据

发布于 2024-12-25 04:19:02 字数 663 浏览 0 评论 0原文

我在使用供应商的 api 检索消息的 xml 部分时遇到问题。作为一个有效的例子: 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 数据指针。程序员可以将返回的 void 指针强制转换为任何适合应用程序的引用。

I'm having an issue with retrieving an xml portion of a message using a vendor's api. As an example of what works:
getDestination(void* message , void* destination, void* size)

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

produces: Received message. (Destination: some destination).

Hoever to retrieve the XML portion of the message it requires a function which is 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);

So the question is, how do I declare and pass ptr in such a way that I can get the xml information out (the vendor's documentation is really bad) it mostly says that the argument should be a pointer to the application pointer to fill in with the message XML data pointer on return. The programmer may cast the returned void pointer to any reference suitable for the application.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

季末如歌 2025-01-01 04:19:02

好吧,您将指向 void 的指针声明为指向 void 的指针:void *ptr;

Well, you declare pointer to void as a pointer to void: void *ptr;.

情何以堪。 2025-01-01 04:19:02

void** 表示您正在通过引用传递指针;据推测,该函数将修改它以指向 XML 数据存储的位置。所以你需要一个指针,而不是数组:

void * ptr;
int size;
getXMLPtr(msg_p, &ptr, &size);

void** means you're passing a pointer by reference; presumably, the function will modify this to point to wherever it the XML data is stored. So you need a pointer, not an array:

void * ptr;
int size;
getXMLPtr(msg_p, &ptr, &size);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文