繁体   English   中英

struct之后的public是什么意思?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM