如何在运行时计算数据类型滚转之前允许的最大值



我有以下结构:

struct Some_Struct {
    uint32_t a;
    int16_t  b;
    uint8_t  c;
};
struct Other_Struct {
    uint32_t a;
    uint32_t b;
    uint32_t c;
};

变量大小是这样计算的:

uint32_t size = sizeof(Some_Struct) + sizeof(Other_Struct) * n;

我的问题是,给定sizeof Some_Struct和Other_Struct,其实际大小取决于平台,体系结构和包装,我如何在运行时确定size滚动之前允许的n的最大数量?

您可以使用numeric_limits:

uint32_t maximum_n = (std::numeric_limits<uint32_t>::max() - sizeof(Some_Struct))
                                / sizeof(Other_Struct);

相关内容

最新更新