typedefs的一个常见用途是使变量的“类型”能够更好地表达变量的用途,而无需重新定义其背后的存储结构。Typedefs和printf格式说明符
但是,我也看到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位偏移量(或其他!)偏移量只需很少的更改。
感谢您的回答:)我接受了另一个,虽然,因为它是一个比较完整的响应,如果任何人有兴趣在这个问题上。 – Vanwaril