在 C 中使用零长度数组有什么好处?
例如:
struct email {
time_t send_date;
int flags;
int length;
char body[];
}list[0];
大小数组0
在 C 中无效。
char bla[0]; // invalid C code
从标准:
(C99, 6.7.5.2p1) “如果表达式是常量表达式,它的值应大于零。”
因此list
声明在您的程序中无效。
具有不完整类型作为结构的最后一个成员的数组是灵活数组成员。
struct email {
time_t send_date;
int flags;
int length;
char body[];
};
这body
是一个灵活的数组成员。
这是你的答案:http ://www.quora.com/C-programming-language/What-is-the-advantage-of-using-zero-length-arrays-in-C