Я пытаюсь получить размер битполя.C++ Как получить размер членов битового поля?
К примеру, я получил общую ручку:
template<size_t n, size_t m>
struct handle
{
uint32 index : n;
uint32 validation : m;
}
Теперь я хочу, чтобы получить размер членов.
Я нашел макрос, который работает, когда у меня есть handle<16, 16>
и расширяет желаемые элементы до sizeof
. В этом случае, если я перехожу в index
, я получаю 16
в качестве моего вывода.
Но там я должен был бы передать свою выходную переменную.
Есть ли способ, возможно, с помощью магии шаблона, чтобы развернуть прямо на нужный номер? Итак, я мог бы пройти в sizeof_bit(class, member)
и получил sizebit
размер этого пользователя?
sizeof (uint32) или sizeof (n) получит размер члена в байтах (8 бит на каждый байт). Хотя вы явно определяете их как 32 бита. так что я предполагаю, что у вас другой вопрос? – IdeaHat
@MadScienceDreams: Я думаю, он хочет знать значение 'n' и' m', т. Е. Сколько бит в битполе. ('' У вас не должно быть ровно 8 бит на байт. ' ') –
Lstor
Возможно, вам стоит поделиться макросом, который работает, и определить источник информации. Скорее всего, это не способ восстановить размеры бит-полей через 'sizeof()' et al. Вероятно, вам придется записывать их как часть типа - небитоподобные члены, которые хранят 'n' и' m' и инициализируются конструкторами. –