Initialization of nested flexible array members

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello everybody,

Since a few versions, it appears that gcc doesn't allow anymore the 
initialization of flexible array members. The following code did compile 
under 2.95 but doesn't under 3.3.1:

typedef struct
{
    char a;
    char b;
    int flexo[];
} EnclosedStruct;

typedef struct
{
    int a;
    int b;
    EnclosedStruct s;
} MyStruct;

int main(int argc, char * argv[])
{
    MyStruct toto = { 10, 20, { 'a', 'b', { 0, 1, 2, 3 } } };

}

$ gcc test.c -o test
test.c: In function `main':
test.c:17: error: initialization of flexible array member in a nested context
test.c:17: error: (near initialization for `toto.s.flexo')
test.c:17: error: non-static initialization of a flexible array member
test.c:17: error: (near initialization for `toto.s')

This is however something we *really* need to do, and consider safe since the 
flexible member is located at the end of the enclosing structure. Is there 
any workaround we could use, or do anybody have any advice to give to face 
this situation?

Thanks in advance,
Alex.


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux