Does union support flexible array members?

前端 未结 3 1413
闹比i
闹比i 2021-01-06 10:36

I have declared a flexible array member in union, like this:

#include  

union ut
{
    int i;
    int a[]; // flexible array member
};

int m         


        
3条回答
  •  -上瘾入骨i
    2021-01-06 10:44

    No, unions do not support flexible array members, only structs. C11 6.7.2.1 §18

    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.

    In addition, zero-length arrays is not valid C, that's a gcc non-standard extension. The reason why you get this to work is because your compiler, gcc, is configured to compile code for the "non-standard GNU language". If you would rather have it compile code for the C programming language, you need to add compiler options -std=c11 -pedantic-errors.

提交回复
热议问题