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

jgl*_*uie 5 winapi dynamic-arrays

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

从2004年开始我看到一篇关于它的MSDN博客帖子,但这对我没有意义.

And*_*ers 5

我假设你在谈论这篇博文.

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

typedef struct {
    int CommonFlags
    int CountOfThings;
    THING Things[ANYSIZE_ARRAY]; //Things[1];
} THINGSANDFLAGS;
Run Code Online (Sandbox Code Playgroud)

与这些结构工作,你往往首先调用所需的API来获取数据的大小,然后分配的内存足够大的块,最后再次调用相同的API,因此它可以在数据填写...