突然ですが!
enum ってありますが、コイツは int と互換性がある事は衆知の事実です。つまり,Win32環境でビルドした場合では sizeof(enum_type) == 4 は確定でしょう。
しかしながら、気になることが。
32bit環境では、一番相性の良い 4byte になるのは良く解ります。 じゃぁ 64bit環境ではどうなるんだろう…?と。
int と互換性があるってことは、64bit環境でも4byte なのだろうか…。でもそれだと、折角の64bit幅が勿体無くね? MSは独自拡張してねぇのかな?
というわけで、VS2005b2にて以下のコードを x64 でビルドしてみました。
enum A
{
A_ForcrPTR = MININT_PTR;
};
結果。 C4341 でした。(死
64bit環境でも、enumは "int" までしか扱えない模様です。
……勿体無い仕様だなぁ。
何が気になるって、構造体のメンバにしたときアライメントの関係で無駄な4バイトのスペースが出来てしまうだろう点ですね。多分8バイトアライメントでしょうから…。(気にしすぎという話もありますけど^^;)
ただ、この根本の原因は、Win64環境での sizeof(int) == 4 な点に有るような気がしないでもないですー
>どうにかならんかったのかなぁー。(苦笑