给定此结构:
typedef struct _WLAN_AVAILABLE_NETWORK_LIST {
WLAN_AVAILABLE_NETWORK Network[1];
} *PWLAN_AVAILABLE_NETWORK_LIST;声明WLAN_AVAILABLE_NETWORK Network[1]是什么意思?
发布于 2012-08-13 23:14:41
看起来Network的目的是作为一个flexible array member。通过按sizeof(Network) * (n - 1)字节过度分配结构,库和客户端代码可以在结构末尾之后进行访问,就像数组成员是n元素一样。
库代码:
PWLAN_AVAILABLE_NETWORK_LIST list = malloc(sizeof(_WLAN_AVAILABLE_NETWORK_LIST)
+ (sizeof(WLAN_AVAILABLE_NETWORK) * (n - 1)));
for (int i = 0; i < n; ++i) {
list->Network[i] = ...;
}客户端代码:
for (int i = 0; i < n; ++i) {
do_something(list->Network[i]);
}发布于 2012-08-13 23:13:14
声明名为_wlan...list的结构的typedef struct _WLAN_AVAILABLE_NETWORK_LIST {
WLAN_AVAILABLE_NETWORK Network[1];假设在某个地方声明了一个名为WLAN_AVAILABLE_NETWORK的结构。它是一个长度为1(无意义)的数组,称为Network。
} *PWLAN_AVAILABLE_NETWORK_LIST;立即创建此结构的一个名为pwlan...list的(指针)变量
https://stackoverflow.com/questions/11937128
复制相似问题