[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1311847409.3897.23.camel@thorin>
Date: Thu, 28 Jul 2011 12:03:27 +0200
From: Bernd Petrovitsch <bernd@...rovitsch.priv.at>
To: Guennadi Liakhovetski <g.liakhovetski@....de>
Cc: linux-kernel@...r.kernel.org
Subject: Re: [Q] compiler no longer warning about undeclared struct?
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@...rovitsch.priv.at
LUGA : http://www.luga.at
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists