【发布时间】:2016-04-13 13:06:38
【问题描述】:
我正在使用libdbus API 发送方法调用和接收回复。对于一种这样的方法,我期望得到以下格式的回复:
"a(sqns)"
在 DBus 签名表示法中的意思是:结构体数组,其中每个结构体的内容是字符串、uint16、int16 和字符串。
使用DBusMessageIter(迭代器),我可以遍历数组和结构。但是,为了简化我的解析代码,有没有办法在迭代之前获取这个数组的长度?
不幸的是,我不相信 dbus_message_iter_get_fixed_array 在这种情况下适用,因为我的数组包含的结构根据这个定义似乎意味着 non-fixed size。
从 API 文档中我并没有立即明白如何执行此操作(或者如果可能的话)。
【问题讨论】:
-
它很可能只是存储在动态分配的
struct *数组中,最后一个元素是NULLptr。我想说,如果不遍历整个列表,可能就没有办法。