Sixth, there is a real "mess" about name spaces. It is true that
every C programmers knows the rule saying tags inhabit different name
space than variable of functions. However, all the C coding standards
I've read so far usually suggest
typedef struct foo foo;
but *not*
typedef struct foo *foo;
i.e. "bringing" the tag-name into normal name space to name the type
structure or enumeration is OK, but not naming a different type! the
latter practice will be flagged by a C++ compiler. I guess we may
need some discussion about the naming of structure (POSIX reserves
anything ending with "_t", so we might want to choose something so
that we don't run into problem. However, I do not expect this issue
to dominate the discussion :-))