AR# 38592

12.1 EDK - mb-gcc でビットフィールドを使用したストラクチャが正しくパックされない

説明

「packed」属性を使用したビットフィールドで変数をパックしようとすると、変数が期待サイズと一致しません。

ソリューション


char 型の変数のビットフィールドが正しくパックされないという、GNU GCC の既知の問題があります。これはオンラインの GCC 資料に記載されています。 http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html

メモ : GCC の 4.1、4.2 および 4.3 シリーズでは char 型のビットフィールドの「packed」属性が無視されます。これは GCC 4.4 で修正されていますが、この変更のためにストラクチャ レイアウトに違いができる可能性があります。詳細は、-Wpacked-bitfield-compat の資料を参照してください。

また、これは enum 型にも同じ問題が起きる可能性があります。enum は ANSI/ISO C で特定サイズに定義されていません。つまり、char、short、または int 型に置き換えることができます。


この問題を回避するには、char または enum ではなく、int または short 型を使用してください。
AR# 38592
日付 10/14/2010
ステータス アクティブ
種類 一般
ツール