Typedefs и спецификаторы формата printf

Типичное использование определений типов состоит в том, чтобы позволить «типу» переменной передать лучшее представление о назначении переменной без переопределения стоящей за ней структуры хранения.

Однако я также рассматриваю 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-битные (или что-то еще!) смещения с минимальными затратами. изменения.

12
задан Vanwaril 9 May 2012 в 00:10
поделиться