https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79269
Bug ID: 79269 Summary: Calculate size of struct with flexible array at compile time Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: mojo at world3 dot net Target Milestone: --- As per the C99 standard, GCC treats structs with flexible arrays as if the array had a size of 0. GCC offers an extension to allow such structs to be initialized. For example: struct { char a; char b[]; } test = { 10, { 0, 1, 2, 3 } }; In this case sizeof(test) will return 1, because b[] is considered to have a size of zero even though GCC will correctly allocate 4 bytes and initialize them. To compliment this extension, a new builtin similar to sizeof() could be created that returns the actual size of the struct (5 in this example). This would be extremely useful for embedded systems in particular. For example, one could: struct { char length; char array[]; } test = { __new_sizeof(test) - 1, { 0, 1, 2, 3 } };