On Tue, Jul 11, 2023 at 05:56:27 -0700, Jason Thorpe wrote:

> > On Jul 11, 2023, at 3:17 AM, Taylor R Campbell <riastr...@netbsd.org> wrote:
> > 
> > If we used `struct bus_dma_tag *' instead, the forward declaration
> > could be `struct bus_dma_tag;' instead of having to pull in all of
> > sys/bus.h, _and_ the C compiler would actually check types.
> 
> In the original design, it's not always a struct.  That was the
> whole point of using a more abstract type.

The bus_dma_tag_t example from the original email is not the best one,
but I didn't want to open that can of worms in my reply, so I
mentioned the "not always struct" case without actually mentioning
names.

The style(5) specifically gives an example of a struct typedef, not of
an opaque typedef.


> If you want to hide the struct'ness in a machdep header file, fine,
> but I completely disagree with the notion of requiring the use of
> the "struct" keyword all over the place.

I used to lean both ways at different times and in different contexts.
I think that existence and usefulness of opaque typedefs is exactly
the strong argument against using "convenience struct typedefs", b/c
the latter dilute the message so to speak.  If someone wants to
program with "systems hungarian", they know where to find it...

-uwe

Reply via email to