[wish] Flexible array members in unions
Kees Cook
keescook@chromium.org
Thu May 11 22:16:43 GMT 2023
On Thu, May 11, 2023 at 09:43:49PM +0000, Joseph Myers wrote:
> On Thu, 11 May 2023, Kees Cook via Gcc wrote:
>
> > Why are zero-sized objects missing in Standard C? Or, perhaps, the better
> > question is: what's needed to support the idea of a zero-sized object?
>
> Zero-sized objects break the principle that different objects have
> different addresses, and the principle of being able to subtract pointers
> to different elements of an array. There would also be serious C++
> compatibility concerns, since C++ allows a struct with no members but it
> has nonzero size, unlike the GNU C extension where a struct with no
> members has size zero.
Okay, understood. If this is a C-only thing, we can ignore the C++
impact. What depends on the "different objects have different addresses"
principle? And why do unions not break this -- they could point to the
same locations within the object? And don't flexible arrays already need
special handling in this regard?
--
Kees Cook
More information about the Gcc
mailing list