【发布时间】:2012-05-17 12:06:51
【问题描述】:
typedef 的一个常见用途是使变量的“类型”能够更好地传达变量用途的概念,而无需重新定义其背后的存储结构。
不过,我也将 typedef 视为一次性更改一类变量的存储结构的一种方式。
例如,如果我定义
typedef uint32_t my_offset_t
并且拥有my_offset_t 类型的变量,将代码库从uint32_t 切换到char 或uint64_t 就像更改一行并重新编译一样简单(假设我使用了sizeof 而不是硬编码大小),printf / scanf 除外。
有没有一种方法可以根据类型以某种简单的方式交换格式说明符,而无需围绕 printf/scanf、if-elses 或 ifdefs 的包装函数?
谢谢!
对于任何感兴趣的人,我正在修改使用 16 位偏移量的 LKM 以使用 32 位偏移量,但希望它能够转到 64 位(或其他!)偏移量,如果必要的改动最少。
【问题讨论】:
标签: c typedef format-specifiers