的好介绍
我想向那些使用混合32/64位构建的printf
人推荐使用 。 我尝试了谷歌的介绍或教程页面,其中包含一些示例和使用指南,但我找不到一个。
有人可以推荐的介绍或教程吗?
尝试http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/inttypes.h.html开始。
在avr-libc中找到了如何使用新的可移植格式化宏的更好示例。 我已经包含了一个例子(来自链接)来说明。 QNX库也有一个更好的人类可读的描述(如果你不喜欢阅读规范冷),虽然你必须滚动几乎到页面的末尾,以获得描述的内容。
#include uint8_t smallval; int32_t longval; ... printf("The hexadecimal value of smallval is %" PRIx8 ", the decimal value of longval is %" PRId32 ".\n", smallval, longval);
请注意,这使用“String”“String”隐含连接运算符来生成字符串(在此示例中)
"The hexadecimal value of smallval is %x, the decimal value of longval is %ld.\n"
尝试分解命名约定似乎表明:
- (前三个字母)
- printf格式的PRI
- 扫描格式的SCN
- (第四封信)
- x表示hex格式
- 你的无符号格式
- o用于八进制格式
- 我用于整数格式化
- d表示十进制格式
- (额外的字母)
- 8位8位
- 16比16
- 三十二位32
- 六十四位64
- FAST8为“快速”8位
- FAST16用于“快速”16位
- FAST32为“快”三十二位
- FAST64为“快”六十四位
- LEAST8为“最少”八位
- 至少16位的LEAST16
- LEAST32为“至少”三十二位
- LEAST64为“至少”六十四位
- 指针的PTR
- MAX表示支持的最大位数
所以PRIx8
意味着printf格式指令格式化为hex8位。
对于那些事情,我总是遵循标准( PDF链接 ); 一旦你弄清楚它们所设置的模式,它们就不会太复杂。相关部分是§7.8整数类型的格式转换
。
HP在编写可移植代码方面有很好的参考,他们为使用inttypes.h提供了一些具体的建议
编写便携式代码
我总是从维基百科开始查找标题。
似乎在维基百科上存在很大问题。 我将采取的下一步是访问该网站 。 此前一个站点列出了每个宏,并举例说明。 您还可以查看此网站 ,它实际上显示了头文件。 我不认为其中任何一个都是真正的教程,但它们是一个很好的跳跃点。