std::numeric_limits 出错

转载 2018年04月16日 17:09:30

not enough actual parameters for macro 'max'  for std::numeric_limits<size_t>

如果在程序中同时导入limits.h和windows.h,并使用numeric_limits::max()或numeric_limits::min()就会发生编译错误:

  1. --------------------Configuration: MultiInGF8 - Win32 Debug--------------------  
  2. Compiling...  
  3. main.cpp  
  4. F:\software\VC\Microsoft Visual Studio\MyProjects\MultiInGF8\main.cpp(103) : warning C4003: not enough actual parameters for macro 'max'  
  5. F:\software\VC\Microsoft Visual Studio\MyProjects\MultiInGF8\main.cpp(103) : error C2589: '(' : illegal token on right side of '::'  
  6. F:\software\VC\Microsoft Visual Studio\MyProjects\MultiInGF8\main.cpp(103) : error C2143: syntax error : missing ')' before '::'  
  7. F:\software\VC\Microsoft Visual Studio\MyProjects\MultiInGF8\main.cpp(103) : error C2059: syntax error : ')'  
  8. 执行 cl.exe 时出错.  
  9.   
  10. main.obj - 1 error(s), 0 warning(s)  

本来想用numeric_limits::max()来清空输入缓冲区,从而处理输入出错的异常情况:

  1. cin.ignore(numeric_limits<std::streamsize>::max(),'\n'); // 清除输入缓冲区中的当前行内容  

另一方面,又要对程序进行计时,于是导入了windows.h:

  1. #include <limits> // numeric_limits  
  2. #include <windows.h>  

结果发生了冲突,即以上的编译错误。

幸好【C++跨平台系列】解决STL的max()与numeric_limits::max()和VC6 min/max 宏冲突问题该文章给出了解决方法。

问题应该是以上两个头文件的宏定义出现了冲突,可以通过括号“()”来避免预编译器报错。

也就是改成这样:

于是,上述语句改为

  1. cin.ignore((numeric_limits<std::streamsize>::max)(),'\n'); // 清除输入缓冲区中的当前行内容  


这样就不会发生冲突问题了。


vs编译std::numeric_limits::max()编译错误

今天使用了一下STL中的z数值极限竟然编译不过, std::numeric_limits::max() 出现如下错误:  warning     C4003:     “max”...
  • tanningzhong
  • tanningzhong
  • 2016-10-22 10:48:31
  • 919

std::numeric_limits::max() std::numeric_limits::min()编译错误

【原文:http://blog.csdn.net/manyikaimen/article/details/51565321】 今天使用了一下STL中的z数值极限竟然编译不过, std::num...
  • zhazhiqiang2010
  • zhazhiqiang2010
  • 2016-09-09 13:58:49
  • 1592

'numeric_limits' is not a member of 'std'|

#include #include
  • wangrongm2009
  • wangrongm2009
  • 2014-11-18 16:24:56
  • 896

在windows上报错numeric_limit is not a member of std

问题:开发中用到了numeric_limit,在mac里是正常的,但是在window上却报错了??? 解决方法:你需要添加头文件,这个头文件定义了 std::numeric_limits这个变量。...
  • wcjwdq
  • wcjwdq
  • 2016-11-19 15:06:02
  • 663

C++/C++11中std::numeric_limits的使用

C++/C++11中std::numeric_limits的使用
  • fengbingchun
  • fengbingchun
  • 2017-09-10 15:46:02
  • 2631

qcustomplot.h中double minDistSqr = (std::numeric_limits<double>::max)()这一句报错

std::numeric_limits::max() 出现如下错误:  warning     C4003:     “max”宏的实参不足        error     C25...
  • Adolf_wang
  • Adolf_wang
  • 2017-06-13 15:06:37
  • 286

std::numeric_limits<int>::min()报错

用【std::numeric_limits::min()】的时候,发现了一个奇怪的现象,如下: //#include /* 一旦【std::numeric_limits::min();】之前有【#i...
  • u013600225
  • u013600225
  • 2016-04-08 14:23:39
  • 610

std::numeric_limits<unsigned int>::max()编译错误

转自:http://blog.chinaunix.net/uid-17102734-id-2830143.html 今天使用了一下STL中的z数值极限竟然编译不过, std::nume...
  • m0_37290785
  • m0_37290785
  • 2017-10-12 17:15:33
  • 162

PCL中std::numeric_limits::max()编译错误

今天在测试程序时发现,PCL包含目录下pcl-1.8\pcl\io\ply\io_operators.h中,    std::numeric_limits::max()会出现编译错误,  ...
  • u013045316
  • u013045316
  • 2016-08-04 16:19:12
  • 567

关于numeric_limits

今天做BS的TC++PL第四章的习题,有一个求各种类型的最大最小值的题,要用到 numeric_limits模版类,做完题以后,查了一下该模版类的用法,在本文做个总结。 我的求各种类型范围的函数: ...
  • lingxiu0613
  • lingxiu0613
  • 2012-03-01 18:13:31
  • 1608
收藏助手
不良信息举报
您举报文章:std::numeric_limits 出错
举报原因:
原因补充:

(最多只允许输入30个字)