我在读this page,上面写着


  如果其中一个字符串具有编码前缀,而另一个则没有,则认为没有字符串的编码前缀与另一个具有相同的编码前缀。


   L"Δx = %" PRId16 // at phase 4, PRId16 expands to "d"
                    // at phase 6, L"Δx = %" and "d" form L"Δx = %d"



  如果UTF-8字符串文字和宽字符串文字并排,则程序格式错误。


为什么PRId16扩展为d?在哪里定义?

最佳答案

在C99(及更高版本)语言标准中,作为<inttypes.h>的一部分:


  [7.8.1]以下每个类似于对象的宏都扩展为包含转换说明符的字符串文字,该字符串说明符可能由长度修饰符修改,适用于在转换相应整数时在格式化输入/输出函数的format参数中使用类型。这些宏名称的通用格式为PRI [...]


有关在线参考,请参见here

C ++标准继承了C的标准库,因此可以在<cinttypes>中找到以上内容。

09-07 23:52