What is the advantage of using zero-length arrays in C?
Eg:
struct email {
time_t send_date;
int flags;
int length;
char body[];
}list[0];
What is the advantage of using zero-length arrays in C?
Eg:
struct email {
time_t send_date;
int flags;
int length;
char body[];
}list[0];
An array of size 0
is not valid in C.
char bla[0]; // invalid C code
From the Standard:
(C99, 6.7.5.2p1) "If the expression is a constant expression, it shall have a value greater than zero."
So list
declaration is not valid in your program.
An array with an incomplete type as the last member of a structure is a flexible array member.
struct email {
time_t send_date;
int flags;
int length;
char body[];
};
Here body
is a flexible array member.
Here is your answer: http://www.quora.com/C-programming-language/What-is-the-advantage-of-using-zero-length-arrays-in-C