>     When porting an application to Solaris, I met a problem for array
 > with 0 element.
 > 
 >     An array with 0 element can be used in class/struct declaration.
 > It's like a place holder to add more memory at the end of the
 > class/struct instance in the future, to make the size of the
 > class/struct variable. For example:
 > 
 > struct {
 >   uint32 length;
 >   uint16 buffer[0];
 > } a;
 >    
 >     It seems that the sun cc doesn't support this. When I build it, the
 > error message shows "Error: An array must have at least one element.".
 > And it works fine with gcc. Is this an extension feature for gcc? Is
 > there any workaround for this with sun cc?

The C99 standard supports this through flexible array members.

    struct {
      uint32 length;
      uint16 buffer[];
    } a;

AFAIK, recent versions of either compiler support this feature.

-- 
meem

Reply via email to