2017-05-31 68 views
0

我阅读this page,它的写了PRId16扩大到d

如果字符串中的一个具有编码的前缀,而另一个没有,不将被视为有一与其他编码前缀相同。

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?这个定义在哪里?

+0

要清楚的是,它扩展为''d“'(在你的系统上),而不是'd',就像你在最后一行所说的那样 –

回答

1

在C99(及以后)语言标准,作为<inttypes.h>部分:

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

请参阅here的在线参考。

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