Типичное использование определений типов состоит в том, чтобы позволить «типу» переменной передать лучшее представление о назначении переменной без переопределения стоящей за ней структуры хранения.
Однако я также рассматриваю typedef как способ изменить структуру хранения для класса переменных за один раз.
Например, если я определяю
typedef uint32_t my_offset_t
и имею переменные типа my_offset_t
, переключение кодовой базы с uint32_t
на char
или uint64_t
так же просто, как изменить одну строку и перекомпилировать (при условии, что я использовал sizeof
, а не жестко закодированные размеры), за исключением случая printf / scanf.
Есть ли способ поменять спецификаторы формата в соответствии с типом простым способом, без функций-оболочек вокруг printf
/ scanf
, if-elses или ifdefs?
Спасибо!
Для всех, кто заинтересован, я модифицирую LKM, который использует 16-битные смещения, для работы с 32-битными смещениями, но хочу, чтобы он мог при необходимости переходить на 64-битные (или что-то еще!) смещения с минимальными затратами. изменения.