https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71742

            Bug ID: 71742
           Summary: Wrong formulation of "error: flexible array member in
                    otherwise empty struct"
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ch3root at openwall dot com
  Target Milestone: ---

Source code:

----------------------------------------------------------------------
int main()
{
  struct s {
    int :1;
    int a[];
  };
}
----------------------------------------------------------------------

Results:

----------------------------------------------------------------------
$ gcc -std=c11 -pedantic -Wall -Wextra -O3 test.c && ./a.out
test.c: In function ‘main’:
test.c:5:9: error: flexible array member in otherwise empty struct
     int a[];
         ^
----------------------------------------------------------------------

gcc version: gcc (GCC) 7.0.0 20160627 (experimental)

gcc is right in detecting an error in this testcase but the message is wrong
because the struct is not otherwise empty. The problem is absence of named
members.

The relevant rule:

C11, 6.7.2.1p18: "As a special case, the last element of a structure with more
than one named member may have an incomplete array type; this is called a
flexible array member."

Reply via email to