Типичное использование typedefs состоит в том, чтобы позволить «типу» переменной передать лучшее представление о назначении переменной без переопределения стоящей за ней структуры хранения.
Однако я также рассматриваю 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-битные (или какие-то другие!) смещения с минимальными затратами. изменения.