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

Re: [parisc-linux] possible gcc-3.2 bug?



> > ---------------------8<-----------------------
> > /* compile with gcc -c foo.c */
> > 
> > typedef struct {
> >         volatile unsigned int lock;
> > } spinlock_t;
> > 
> > typedef struct {
> >         spinlock_t lock;
> >         volatile int counter;
> > } rwlock_t;
> > 
> > void foo(void)
> > {
> >         static rwlock_t x = (rwlock_t) { (spinlock_t) { 1 }, 0 };
> > }
> 
> Except for sizeof, cast operators in initializers for static variables
> can only be used to convert arithmetic types.  GCC allows non-constant
> initializers for automatic variables.

well, it's doesn't seem to be very consistent about it then...

static rwlock_t x = (rwlock_t) { { 1 }, 0 };
is ok

static rwlock_t x = { (spinlock_t) { 1 }, 0 };
is also ok

only when you have both casts does it fail...

randolph



Reply to: