Так, Вы знаете, как примитив символа типа имеет размер 1 байта? Как я сделал бы примитив с пользовательским размером? Таким образом как вместо в интервале с размером 4 байтов я делаю один с размером, позволяет, говорят 16. Существует ли способ сделать это? Существует ли путь вокруг этого?
Обычно вы просто создаете структуру, представляющую интересующие вас данные. Если это 16 байтов данных, либо это совокупность нескольких более мелких типов, либо вы работаете над процессором, который имеет собственный 16-байтовый интегральный тип.
Если вы пытаетесь представить чрезвычайно большие числа, вам может потребоваться специальная библиотека, которая обрабатывает числа произвольного размера.
Если вы хотите создать новый тип, введите его. Если вы хотите, чтобы его размер составлял 16 байтов, введите структуру, содержащую 16 байтов данных-членов внутри нее. Просто помните, что довольно часто компиляторы будут накладывать на вас что-то в соответствии с вашими потребностями в выравнивании системы. 1 байтовая структура редко остается без внимания.
Это зависит от того, почему вы это делаете. Обычно вы не можете использовать типы менее 8 бит, потому что это адресуемая единица для архитектуры. Однако вы можете использовать структуры для определения разной длины:
struct s {
unsigned int a : 4; // a is 4 bits
unsigned int b : 4; // b is 4 bits
unsigned int c : 16; // c is 16 bits
};
Однако нет гарантии, что структура будет иметь длину 24 бита. Кроме того, это может вызвать проблемы с порядком байтов. Там, где это возможно, лучше всего использовать системные независимые типы, такие как uint16_t и т. Д. Вы также можете использовать побитовые операторы и битовые сдвиги для очень специфического поворота вещей.