https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119312
--- Comment #6 from Bruno Haible <bruno at clisp dot org> --- > If you do > struct S { char a[4]; char b[4]; }; > extern void foo (struct S *); Yeah, but the submitted case looks more like struct S { const char a[4]; const char b[4]; }; extern void foo (struct S *); and there, the function foo is not allowed to contain statements like s[-1].b[2] = ' '; s->a[0] = '1'; The point being that the fields a and b in the struct are const.