零长度阵列

时间:2012-09-13 17:57:08

标签: c arrays

在C中使用零长度数组有什么好处?

例如:

struct email {
    time_t send_date;
    int flags;
    int length;
    char body[];
}list[0];

2 个答案:

答案 0 :(得分:4)

大小为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是一个灵活的数组成员。

答案 1 :(得分:-1)