Messages in this thread | | | Subject | Re: [Q] compiler no longer warning about undeclared struct? | From | Bernd Petrovitsch <> | Date | Thu, 28 Jul 2011 12:03:27 +0200 |
| |
Hi!
On Mit, 2011-07-27 at 19:57 +0200, Guennadi Liakhovetski wrote: [....] > I just ran across a driver in the kernel (drivers/media/video/ov2640.c, > struct ov2640_priv::info), that does something like > > struct xx { > struct yy *y; > }; > > static void z(void) > { > struct xx *x; > void *p; > > x = ...; > p = ...; > x->y = p; > } > > where "struct yy" is nowhere declared, and the compiler happily swallows > this... Shouldn't it complain? Didn't it complain before?
It's normal C behaviour: As long as the compiler doesn't need the size or fields of struct yy, it doesn't complain that it doesn't know the details.
Otherwise you could not define recursive structures as in ---- snip ---- struct a { struct *b; }; struct b { struct *a; }; ---- snip ----
Kind regards, Bernd -- Bernd Petrovitsch Email : bernd@petrovitsch.priv.at LUGA : http://www.luga.at
| |