On Wed, Jan 16, 2019 at 12:49:07PM +0100, Paolo Bonzini wrote:
> On 16/01/19 12:34, Gerd Hoffmann wrote:
> > Hi,
> >
> >> typedefs.h is useful to avoid rebuilding the world too often if a type
> >> is used many times as a pointer, but rarely as a struct and rarely has
> >> functions called on its instances.
> >
> > Related: Can also be used to keep struct content private. struct
> > QemuConsole for example is private to ui/console.c, but pointers to
> > QemuConsole are passed around alot in ui/* and hw/display/* code.
>
> True, though as we switch more and more from pointers to embedded
> structs that does not work that much anymore. Another way to do that is
> to split the header in include/path/to/foo.h and path/to/foo_internal.h.
>
> Paolo
Not sure this will help since no tool checks structure isn't
actually used even though it's in internal.
If you want to go overboard it's solvable of course, e.g.
something like this will work:
E.g. in virtio.h
#ifndef VIRTIO_PRIVATE
#define VIRTIO_PRIVATE(f) (VIRTIO_PIVATE_##f)
#endif
struct VirtioPrivate {
int VIRTIO_PRIVATE(bar);
};
and in virtio.c:
#define VIRTIO_PRIVATE(f) (f)
#include <virtio.h>
--
MST