enum Hoge { HOGE_1 };
void WINAPI foo(Hoge);

というのがあった場合、Hogeのサイズは言語的にどう決まるのでしょうか?
というのは、fooはDLLからエクスポートする関数なのですが
EXE側の製作環境によってHogeのサイズが変わると困るのです。
また、列挙子が増えた場合にサイズが変わっても困ります。

DirectXでは
***_FORCE_DWORD = 0x7fffffff
という使わない列挙子を作って強制的に4byteにしてるようですが
これで4byteになるという保障は言語的にあるのでしょうか?