typedefs 的一个常见用途是使变量的“类型”能够更好地传达变量用途的概念,而无需重新定义其背后的存储结构。
但是,我也将 typedef 视为一次性更改一类变量的存储结构的一种方式。
例如,如果我定义
typedef uint32_t my_offset_t
并且有 type 的变量,my_offset_t
将代码库从uint32_t
to切换到char
oruint64_t
就像更改一行并重新编译一样简单(假设我使用sizeof
了而不是硬编码的大小),除了 printf / scanf 的情况。
有没有一种方法可以根据类型以某种简单的方式交换格式说明符,而无需printf
/ scanf
、 if-elses 或 ifdefs 周围的包装函数?
谢谢!
对于任何感兴趣的人,我正在修改一个使用 16 位偏移量的 LKM 以使用 32 位偏移量,但希望它能够在必要时以最小的更改进入 64 位(或其他!)偏移量。