<<On Fri, 8 Jun 2001 16:10:59 +0100, "Clive D.W. Feather" <clive@demon.net> said:
So in foo.h write the one line:
typedef struct timezone timezone_t;
So it's perfectly OK for me to also write: typedef struct __sFILE FILE; ...in my headers as well? You know very well that this is not portable. The implementation (which controls <timezone.h> in the scenario we're discussing) might choose to define timezone_t some other way -- perhaps they make it a `union __timezone *' instead. Even if it were standardized, this would still break when an application actually needed <timezone.h> and my declaration in <foo.h> became redundant. In any case, only a faulty standard would declare that `timezone_t' is always a `struct timezone'. A good standard would not have a `timezone_t' to begin with. (In the FreeBSD Project, and probably many other places, our coding standard is very explicit: don't use typedefs for structures. This deficiency in C is precisely the reason for making that requirement.) -GAWollman