Q:

TAG_ Prefix on C/C++ structs?

I'm not sure why it escapes me now, but can anyone tell me why so many structs are named with the TAG_ prefix?
What is this a mnemonic for, or an acronym of?
It seems to be a common enough convention in all sorts of environments, so surely there is a meaning behind it.  I know a lot just gets "monkey copied" and the lore behind such things often gets lost over time.  I thought I knew the story myself once, but right now I'm clueless.
One person suggested it stands for "The Actual Guts" of something, e.g. TAG_HANDLE being the "guts of" a handle.  This doesn't ring a bell and seems just a bit too frivolous though.
Can anyone help clear my mental block on this?

A:

It's not an acronym, it's just literally "tag".  That's the technical term for it.  See e.g. section 6.7.2.3 of the C99 spec.
The term "tag" is often incorporated into the name simply to avoid confusion with the typedef name, e.g.:
typedef struct tag_blah
{
    ...
} blah;

