[RFC]confusions about 'struct' define

Bernd Petrovitsch bernd at petrovitsch.priv.at
Fri Jun 1 05:30:51 EDT 2012


On Don, 2012-05-31 at 01:37 +0800, harryxiyou wrote:
> On Thu, May 31, 2012 at 1:20 AM, Gaurav Jain <gjainroorkee at gmail.com> wrote:
> > Those are forward declarations as they are being used in defining struct
> > bus_attribute. It's nothing special about GNU-C. That's the case for ANSI-C
> > too. Pretty standard.

These actually exists since K&R times.

> Hmmm.., that is to say, they may be used before definitions in this file or
> defined in other files like 'struct iommu_ops;' field (Actually, i can

Yes, that's the only reason. And you can't use it if you need the actual
size of that struct because the compiler doesn't know it (yet).
The main usage scenario is if you need a pointer to it.

> not find this field's
> definition in this file). However, if it has been defined in other
> header files, we need
> not declare here, right?

If you #include that other file, yes.
But it is not trivial in very large projects like the Linux kernel to
keep somewhat logical and clean and circular-free -h files.
And you also do not really want a separate .h file for each struct.

Bernd Petrovitsch                  Email : bernd at petrovitsch.priv.at
                     LUGA : http://www.luga.at

More information about the Kernelnewbies mailing list