我在Windows安装的标准stdint.h头文件中遇到了一些整数文字。文字的后缀形式为:
i8,ui8,i16,ui16,i32,ui32,i64,ui64。
我之前遇到过i64形式的后缀,但从未遇到任何其他形式的后缀。我很好奇这些扩展记录在哪里。我花了一些时间查看Microsoft文档以及其他文档,但找不到它们。
这完全是好奇心问题。我很清楚后缀是什么意思。如果任何人有文档的链接,我将不胜感激,如果您分享了参考文献。
提前致谢!
答案 0 :(得分:2)
i64和ui64记录在旧版VC ++版本的“C ++ Integer Constants”下,例如https://msdn.microsoft.com/en-us/library/00a1awxf(v=vs.120).aspx。它们仍然记录在最新的VC ++ 2015中,但明确建议不要使用Microsoft特定的而不是可移植的https://msdn.microsoft.com/en-us/library/c70dax92.aspx。
要指定64位整数类型,请使用LL或ll后缀。仍支持i64后缀,但应避免使用,因为它特定于Microsoft且不可移植。
我认为其他人根本没有记录,而且无论如何使用它们可能都不是一个好主意。
答案 1 :(得分:1)
如果由于弃用或其他原因而永远消除了这些由Microsoft产生的内在文字后缀,那么您可以通过C ++ 11的用户定义文字编写自己的每个后缀的精确替换:{{3 }}
例如:
constexpr uint16_t
operator"" ui16 ( uint16_t literal_ )
noexcept
{
return literal_;
}