12.1 EDK  –  mb-gcc没有使用位域正确打包结构-Xilinx-AMD社区-FPGA CPLD-ChipDebug

12.1 EDK – mb-gcc没有使用位域正确打包结构

描述

当我尝试使用“packed”属性打包带位域的变量时,该变量与预期的大小不匹配。

GNU GCC有一个已知问题,即“char”类型变量上的位域未正确打包。这在在线GCC文档中有记录: http//gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html

注意: 4.1,4.2和4.3系列GCC忽略char类型的位字段上的“packed”属性。这已在GCC 4.4中修复,但这种变化可能导致结构布局的差异。有关更多信息,请参阅-Wpacked-bitfield-compat的文档。“

另请注意,这也适用于“枚举”类型。 “枚举”未定义为ANSI / ISO C规范中的特定大小。这意味着它可以放在“char”,“short”或“int”类型中。

要解决此问题,请使用“int”或“short”类型而不是“char”或“enum”。

请登录后发表评论

    没有回复内容