C++相談室 part29
■ このスレッドは過去ログ倉庫に格納されています
0669デフォルトの名無しさん
NGNGここらでちょっとまとめてみる。
多分、unsigned short にしないと 2 バイトにならないと思うが unsigned short の
bit-field が使えるかは規格上保証されない。
実装で規定されていればその実装では使える。
(14882:1998-9.6/1, 9899:1999-6.7.2.1/4)
Cygwin 上の gcc では unsigned short で 2 バイトになった。
ただ漏れもついこの間まで知らなかったんだが、bit-field のメモリ上への割り当ては
非常に実装依存な領域で、上位から割り当てられるか下位から割り当てられるかも
決まっていないし、割り当て単位をまたいで確保されるかどうかも決まってない。
(14882:1998-9.6/1, 9899:1999-6.7.2.1/10)
実際、gcc には割り当てを Visual C++ 互換にするオプションがあるようだ(-mms-bitfields)。
ということで、メモリ上の割り当てを気にするならば >624, >620 後半のように自前で
処理する方がいいんじゃないかと思う。
■ このスレッドは過去ログ倉庫に格納されています