[英]What does : public after struct mean?
struct hpet : public description_table_header
{
uint8_t hardware_rev_id;
uint8_t comparator_count:5;
uint8_t counter_size:1;
uint8_t reserved:1;
uint8_t legacy_replacement:1;
pci_vendor_t pci_vendor_id;
address_structure address;
uint8_t hpet_number;
uint16_t minimum_tick;
uint8_t page_protection;
} __attribute__((packed));
为什么在结构名和__attribute__((packed))
之后有一个公共名称,为什么放在括号内?
这是用于HPET(高精度事件计时器)的表。
在C ++中,冒号:
后跟可选的public
/ private
/ protected
指示符和类型名称是用于指定继承的语法。
在您的代码中, hpet
类继承了description_table_header
类。
有关公共,私有和受保护继承之间区别的讨论,请参见此答案 。
代码是C ++,而不是您标记它的C。 这是一个非常重要的细节。
这里的public
是继承的访问说明符(该结构继承自description_table_header
)。 所有好的C ++教科书都将介绍这一点。 关于SO的一个相关问题是: 私有继承,公共继承和受保护继承之间的区别 。 实际上不需要为struct
public
,因为对于结构体,这是默认设置。
__attribute__((packed))
是编译器专有的扩展,用于指定struct
的布局。 在这种情况下,将压缩该struct
,以便该struct
中没有填充。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.