The [public] attribute includes an alias declared with the typedef keyword in the type library.
typedef [public] data-type identifier;
The data type that the identifier will be an alias for.
Another name by which data-type will be known in the software.
By default, an alias that is declared with typedef and has no other attributes is treated as a #define and is not included in the type library. Using the [public] attribute ensures that the alias becomes part of the type library.
The MIDL compiler requires that you explicitly apply the [public] attribute to each typedef that you want public.
typedef [public] long MEMBERID;