我已在联合体中声明了一个灵活的数组成员,就像这样:
#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
};
目前一切运作正常。
为什么零长度数组与union相结合可以正常工作?