• <small id='8NU37'></small><noframes id='8NU37'>

    <tfoot id='8NU37'></tfoot>

        <i id='8NU37'><tr id='8NU37'><dt id='8NU37'><q id='8NU37'><span id='8NU37'><b id='8NU37'><form id='8NU37'><ins id='8NU37'></ins><ul id='8NU37'></ul><sub id='8NU37'></sub></form><legend id='8NU37'></legend><bdo id='8NU37'><pre id='8NU37'><center id='8NU37'></center></pre></bdo></b><th id='8NU37'></th></span></q></dt></tr></i><div id='8NU37'><tfoot id='8NU37'></tfoot><dl id='8NU37'><fieldset id='8NU37'></fieldset></dl></div>
      1. <legend id='8NU37'><style id='8NU37'><dir id='8NU37'><q id='8NU37'></q></dir></style></legend>
        • <bdo id='8NU37'></bdo><ul id='8NU37'></ul>

      2. std::numeric_limits::max 的语法错误

        时间:2023-07-01
      3. <i id='iiEAv'><tr id='iiEAv'><dt id='iiEAv'><q id='iiEAv'><span id='iiEAv'><b id='iiEAv'><form id='iiEAv'><ins id='iiEAv'></ins><ul id='iiEAv'></ul><sub id='iiEAv'></sub></form><legend id='iiEAv'></legend><bdo id='iiEAv'><pre id='iiEAv'><center id='iiEAv'></center></pre></bdo></b><th id='iiEAv'></th></span></q></dt></tr></i><div id='iiEAv'><tfoot id='iiEAv'></tfoot><dl id='iiEAv'><fieldset id='iiEAv'></fieldset></dl></div>

            <bdo id='iiEAv'></bdo><ul id='iiEAv'></ul>
          • <legend id='iiEAv'><style id='iiEAv'><dir id='iiEAv'><q id='iiEAv'></q></dir></style></legend>

              <tbody id='iiEAv'></tbody>

                • <tfoot id='iiEAv'></tfoot>

                  <small id='iiEAv'></small><noframes id='iiEAv'>

                  本文介绍了std::numeric_limits::max 的语法错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我的类结构定义如下:

                  #include <limits>
                  
                  struct heapStatsFilters
                  {
                      heapStatsFilters(size_t minValue_ = 0, size_t maxValue_ = std::numeric_limits<size_t>::max())
                      { 
                           minMax[0] = minValue_; minMax[1] = maxValue_; 
                      }
                  
                      size_t minMax[2];
                  };
                  

                  问题是我不能使用 'std::numeric_limits::max()' 并且编译器说:

                  The problem is that I cannot use 'std::numeric_limits::max()' and the compiler says:

                  错误 8 错误 C2059:语法错误:'::'

                  Error 7 error C2589: '(' : '::'右侧的非法标记

                  我使用的编译器是 Visual C++ 11 (2012)

                  The compiler which I am using is Visual C++ 11 (2012)

                  推荐答案

                  您的问题是由 头文件引起的,该头文件包含名为 maxmin:

                  Your problem is caused by the <Windows.h> header file that includes macro definitions named max and min:

                  #define max(a,b) (((a) > (b)) ? (a) : (b))
                  

                  看到这个定义,预处理器替换了表达式中的max标识符:

                  Seeing this definition, the preprocessor replaces the max identifier in the expression:

                  std::numeric_limits<size_t>::max()
                  

                  通过宏定义,最终导致语法无效:

                  by the macro definition, eventually leading to invalid syntax:

                  std::numeric_limits<size_t>::(((a) > (b)) ? (a) : (b))
                  

                  编译器报错:'(' : '::' 右侧的非法标记.

                  作为一种解决方法,您可以将 NOMINMAX 定义添加到编译器标志(或在包含标头之前添加到翻译单元):

                  As a workaround, you can add the NOMINMAX define to compiler flags (or to the translation unit, before including the header):

                  #define NOMINMAX   
                  

                  或用括号将max的调用包裹起来,以防止宏扩展:

                  or wrap the call to max with parenthesis, which prevents the macro expansion:

                  size_t maxValue_ = (std::numeric_limits<size_t>::max)()
                  //                 ^                                ^
                  

                  #undef max 在调用 numeric_limits::max() 之前:

                  or #undef max before calling numeric_limits<size_t>::max():

                  #undef max
                  ...
                  size_t maxValue_ = std::numeric_limits<size_t>::max()
                  

                  这篇关于std::numeric_limits::max 的语法错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何在发布模式下调试? 下一篇:如何编写会崩溃并生成转储文件的示例代码?

                  相关文章

                  <tfoot id='rzBMT'></tfoot>
                  1. <i id='rzBMT'><tr id='rzBMT'><dt id='rzBMT'><q id='rzBMT'><span id='rzBMT'><b id='rzBMT'><form id='rzBMT'><ins id='rzBMT'></ins><ul id='rzBMT'></ul><sub id='rzBMT'></sub></form><legend id='rzBMT'></legend><bdo id='rzBMT'><pre id='rzBMT'><center id='rzBMT'></center></pre></bdo></b><th id='rzBMT'></th></span></q></dt></tr></i><div id='rzBMT'><tfoot id='rzBMT'></tfoot><dl id='rzBMT'><fieldset id='rzBMT'></fieldset></dl></div>

                      <bdo id='rzBMT'></bdo><ul id='rzBMT'></ul>

                  2. <legend id='rzBMT'><style id='rzBMT'><dir id='rzBMT'><q id='rzBMT'></q></dir></style></legend>

                    <small id='rzBMT'></small><noframes id='rzBMT'>