的好介绍

我想向那些使用混合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提供了一些具体的建议

编写便携式代码

我总是从维基百科开始查找标题。 似乎在维基百科上存在很大问题。 我将采取的下一步是访问该网站 。 此前一个站点列出了每个宏,并举例说明。 您还可以查看此网站 ,它实际上显示了头文件。 我不认为其中任何一个都是真正的教程,但它们是一个很好的跳跃点。