我在读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>
中找到以上内容。