Date: Sun, 20 Oct 1996 19:37:04 -0700 From: John Polstra <jdp@polstra.com> To: Michael Hancock <michaelh@cet.co.jp> Cc: current@freebsd.org Subject: Re: <sys/queue.h> Message-ID: <199610210237.TAA05813@austin.polstra.com> In-Reply-To: Your message of "Mon, 21 Oct 1996 10:32:42 %2B0900." <Pine.SV4.3.93.961021100431.20316B-100000@parkplace.cet.co.jp>
index | next in thread | previous in thread | raw e-mail
> > And it
> > is in line with C++ practice, where the struct, class, or union
> > keyword is almost never used outside of the declaration. (I know,
> > this is C, not C++. But the idea that the name of a type should
> > not carry unnecessary information about its representation is a
> > valid one.)
>
> It's questionable to define a typedef just to save typing the word struct.
True, but that's not the point. The point is, at a certain level,
a type is a type is a type. You shouldn't have to know whether
it's represented as a struct or as a union or as an array. By
using a typedef you enforce not knowing the details of the
representation, making it easier to change that representation in
the future without having to change a bunch of code. The more
opaque a type is, the easier it is to change it later, if you need
to.
It isn't about saving typing, just as "dev_t" isn't about avoiding
typing "unsigned int", and "jmp_buf" isn't about avoiding typing
"struct { int _jb[9]; } foo[1];" It's about information hiding.
Also, it's important to note that that part of my argument was about the
use of typedefs in general, and not specifically about <sys/queue.h>.
John
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199610210237.TAA05813>
