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: