Re: [Q] compiler no longer warning about undeclared struct?

From: Bernd Petrovitsch
Date: Thu Jul 28 2011 - 06:43:27 EST


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@xxxxxxxxxxxxxxxxxxx
LUGA : http://www.luga.at

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/