In MkTypLib the scope of symbols in an enum is local. In MIDL, the scope of symbols in an enum is global with MIDL, as it is in C. For example, the following code will compile in MkTypLib, but will generate a duplicate name error in MIDL:
typedef struct { ... } a;
enum {a=1, b=2, c=3};