我在联合中声明了一个灵活的数组成员,如下所示:
#include <stdio.h>
union ut
{
int i;
int a[]; // flexible array member
};
int main(void)
{
union ut s;
return 0;
}
并且编译器给出错误:
source_file.c:8:9: error: flexible array member in union
int a[];
但是,声明数组大小为零,如下所示:
union ut
{
int i;
int a[0]; // Zero length array
};
它工作正常。
为什么零长度数组可以正常工作?