Enumerations

Enumerations are often written with typedefs:
       typedef enum _ErrorCode {
         ERROR_CODE_NOT_FOUND,
	 ERROR_CODE_BAD_FORMAT,
	 ERROR_CODE_UNKNOWN
       } ErrorCode;
But also recognized:
       typedef enum {
         ERROR_CODE_NOT_FOUND,
	 ERROR_CODE_BAD_FORMAT,
	 ERROR_CODE_UNKNOWN
       } ErrorCode;
And we also recognize the non-ANSI construct:
       typedef enum _ErrorCode ErrorCode;
       enum _ErrorCode {
         ERROR_CODE_NOT_FOUND,
	 ERROR_CODE_BAD_FORMAT,
	 ERROR_CODE_UNKNOWN
       };