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