Мне нужно определить тип набора битов для построения битовых массивов.Между этими массивами могут выполняться битовые операции, такие как и / или / xor (например, для их сравнения), и они являются преобладающими операциями.Какой тип я должен использовать как тип набора битов?
Я думаю, что тип должен быть самым широким НЕ имитируемым типом, который может обработать компилятор.Т.е. если компилятор моделирует 64-битный тип (например, если машина или ОС не поддерживает его), маскируя составные операции между простым и 32-битным типом, следует использовать вместо него.Как это определить?
И еще вопросы:
новый заголовок c99 определяет некоторые типы (целочисленные типы точной ширины), для которых:
"Они имеют вид intN_tи uintN_t. Оба типа должны быть представлены ровно N битами без битов заполнения. intN_t должно быть закодировано как целое число со знаком, дополненным двумя, и uintN_t как целое число без знака. Эти типы являются необязательными, если реализация не поддерживает типы с шириной 8, 1632 или 64, тогда он должен определить их по соответствующим типам с соответствующим N. Любое другое N является необязательным. "
, поэтому я думаю, что реализации, в которых проверка 64-битного типа - это первый шаг, верно?
Мой проект использует библиотеку SDL, которая # определяет макрос:
#ifdef SDL_HAS_64BIT_TYPE
typedef int64_t Sint64;
#ifndef SYMBIAN32_GCCE
typedef uint64_t Uint64;
#endif
#else
/* This is really just a hack to prevent the compiler from complaining */
typedef struct {
Uint32 hi;
Uint32 lo;
} Uint64, Sint64;
#endif
Так что, возможно, я мог бы сделать определение типа набора битов в зависимости от этого макроса (однако это не оптимально, так какЯ хотел бы написать код SDL indipendent).
Скажите мне свое мнение о.