我建议对使用混合32/64位版本的<inttypes.h>
的人使用printf
。我尝试了Google的介绍或教程页面,其中包含一些示例和使用指南,但我找不到一个。
有人可以推荐<inttypes.h>
的介绍或教程吗?
答案 0 :(得分:42)
首先尝试http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/inttypes.h.html。
在avr-libc中找到了如何使用新的可移植格式化宏的更好示例。我已经包含了一个例子(来自链接)来说明。 QNX libraries也有一个更好的人类可读的描述(如果你不喜欢阅读规范冷),虽然你必须滚动几乎到页面的末尾,以获得描述的内容。
#include <inttypes.h>
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"
尝试分解命名约定似乎表明:
所以PRIx8
表示printf格式指令格式化为十六进制8位。
答案 1 :(得分:7)
我总是按照标准(PDF link)来做这些事情;一旦你弄清楚它们所设置的模式,它们就不会太复杂。相关部分是§7.8整数类型的格式转换<inttypes.h>
。
答案 2 :(得分:2)
HP在编写可移植代码方面有很好的参考,他们为使用inttypes.h提供了一些具体建议
答案 3 :(得分:1)
我总是从维基百科开始查找标题。 <inttypes.h>
似乎在维基百科上存在很大问题。接下来我要采取的步骤是this site。此前一个站点列出了每个宏,并举例说明。您还可以查看this site,它实际上显示了头文件。我不认为其中任何一个都是真正的教程,但它们是一个很好的跳跃点。