v4: make initialization of flexible array members GCC compatible
https://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Zero-Length.html
...
Instead GCC allows static initialization of flexible array members. This is equivalent to defining a new structure containing the original structure followed by an array of sufficient size to contain the data. I.e. in the following, f1 is constructed as if it were declared like f2.
struct f1 {
int x; int y[];
} f1 = { 1, { 2, 3, 4 } };
struct f2 {
struct f1 f1; int data[3];
} f2 = { { 1 }, { 2, 3, 4 } };
...
ATM, it seems we just ignore the initializer wrt to establishing the type of f1 and its size.