Microsoft Integer Literal Extensions - 记录在哪里?

时间:2015-11-11 21:06:32

标签: c++ c++11 visual-c++ c++14

我在Windows安装的标准stdint.h头文件中遇到了一些整数文字。文字的后缀形式为:

i8,ui8,i16,ui16,i32,ui32,i64,ui64。

我之前遇到过i64形式的后缀,但从未遇到任何其他形式的后缀。我很好奇这些扩展记录在哪里。我花了一些时间查看Microsoft文档以及其他文档,但找不到它们。

这完全是好奇心问题。我很清楚后缀是什么意思。如果任何人有文档的链接,我将不胜感激,如果您分享了参考文献。

提前致谢!

2 个答案:

答案 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_;
  }