Как рассчитать во время выполнения максимально допустимое значение перед переносом типа данных?

У меня есть следующая структура:

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, чей фактический размер зависит от платформы, архитектуры и упаковки, как я могу во время выполнения определить максимальное количество n разрешено раньше size переворачивается?

-2

Решение

Ты можешь использовать numeric_limits:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]