It needs to be like this:
enum mips_opcode { add = 0, addu, sub, subu }; // type name is "enum mips_opcode"
typedef enum mips_opcode mips_opcode_t; // type alias
Or even:
typedef enum { add = 0, addu, sub, subu } mips_opcode_t; // alias of anon. type
Don't confuse type names and variables!
(By the way, Posix reserves _t
suffixes for types, I believe...)