发生错误的代码segment.h的:
PACKED的定义为:
但是uchar_t本身只有1字节,无法被packed,所以只能忽略,这里的警告被当作错误处理所以编译停止,只需要删除uchart_t的PACKED即可。
struct Segment_Descriptor {
ushort_t sizeLow PACKED ;
uint_t baseLow : 24 PACKED ;
uint_t type : 4 PACKED ;
uint_t system : 1 PACKED ;
uint_t dpl : 2 PACKED ;
uint_t present : 1 PACKED ;
uint_t sizeHigh : 4 PACKED ;
uint_t avail : 1 PACKED ;
uint_t reserved : 1 PACKED ; /* set to zero */
uint_t dbBit : 1 PACKED ;
uint_t granularity : 1 PACKED ;
uchar_t baseHigh PACKED ;
};
PACKED的定义为:
#if __TINYC__
#define PACKED
#else
#define PACKED __attribute__((packed))
#endif
但是uchar_t本身只有1字节,无法被packed,所以只能忽略,这里的警告被当作错误处理所以编译停止,只需要删除uchart_t的PACKED即可。