Недавно я попытался написать сумочку. Во многих частях моего кода мне нужно было решить, основываясь на пользовательском вводе. Для экземпляра мне нужно было выбрать мой тип буфера на основе пользовательского ввода 8 бит или 16 единиц. Я реализовал этот код и он сделал свою работу:Есть ли элегантный способ решить только один раз в соответствии с пользовательским вводом?
if (requestedbitsNumber == 8)
mxMalloc(sizeof(unsigned __int8)*NumberOfElements);
if (requestedbitsNumber == 16)
mxMalloc(sizeof(unsigned __int16)*NumberOfElements);
Теперь мне интересно, есть элегантный способ определить то, как макросы и другие, чтобы решить, только один раз, в зависимости от пользовательского ввода? Что-то вроде этого:
if (requestedbitsNumber == 8)
#define dataType unsigned __int8
if (requestedbitsNumber == 16)
#define dataType unsigned __int16
и использовать datType
везде, где это необходимо. Я знаю, что #define
является препроцессорной директивой и используется до того, как код даже скомпилирован. Я использовал его, чтобы показать, что я имею в виду. Благодарю.
Вместо «хранение» тип данных, вы могли бы просто иметь некоторые 'size_t' переменную, которые вы установили в 'SizeOf (unsigned __intX) '(где X - правильное число). В качестве альтернативы просто выполните 'mxMalloc (requestbitsNumber/8 * NumberOfElements);'. – Cornstalks
Вы правы, когда я создаю свой буфер. Но как насчет того, где мне нужно наложить указатель на пустоту на определенный тип. Что-то вроде 'myUin16Pointer = (unsigned __int16 *) myVoidPointer;' – GntS