【发布时间】:2011-01-14 11:49:24
【问题描述】:
最近遇到了一个结构定义,
struct arr {
int cnt;
struct {
int size;
int *name;
} list[0];
};
现在我不知道list[0] 被声明的原因。我感兴趣的是为什么要使用它。它有什么优势吗?如果是,那是什么?
【问题讨论】:
-
零大小的对象在 C 中是非法的。要么使用
[1]并浪费一点点空间(或计算以弥补它),要么使用[](但你的代码需要C99 编译器)。 -
这是 gcc 手册中关于长度为零的数组的部分:gcc.gnu.org/onlinedocs/gcc/Zero-Length.html