在研究如何printf()
用 C 语言处理跨平台格式字符串时(也就是说,考虑到我希望每个整数参数printf()
应该具有的位数),我遇到了 .wikipedia 文章的这一部分printf()
。本文讨论了可以传递给格式字符串的非标准选项printf()
,例如(似乎是 Microsoft 特定的扩展):
printf("%I32d\n", my32bitInt);
它继续指出:
ISO C99 包含 inttypes.h 头文件,其中包含许多用于与平台无关的 printf 编码的宏。
...然后列出可以在所述标题中找到的一组宏。查看头文件,要使用它们,我必须写:
printf("%"PRId32"\n", my32bitInt);
我的问题是:我错过了什么吗?这真的是标准的 C99 方法吗?如果是这样,为什么?(虽然我并不惊讶我从未见过以这种方式使用格式字符串的代码,因为它看起来很麻烦......)