ANYSIZE_ARRAY在<winnt.h>中的目的是什么?</winnt.h>

时间:2012-02-08 15:04:44

标签: winapi dynamic-arrays

位于WinNT.h中的ANYSIZE_ARRAY的目的是什么?

我在2004年看到一篇关于它的MSDN博客文章,但它对我没有意义。

2 个答案:

答案 0 :(得分:5)

我假设你在谈论this blog post

当变量大小(编译时未知)数组是结构的一部分时,通常使用它:

typedef struct {
    int CommonFlags
    int CountOfThings;
    THING Things[ANYSIZE_ARRAY]; //Things[1];
} THINGSANDFLAGS;

要使用这些结构,您通常首先调用所需的API来获取数据的大小,然后分配足够大的内存块,最后再次调用相同的API,以便它可以填充数据...

答案 1 :(得分:1)

来自this page

  

在C中,可变大小的数组声明为a[1]a[ANYSIZE_ARRAY],其中ANYSIZE_ARRAY定义为1。然后使用它就好像它更大。