std::min std::max VC下编译错误 error C2589: “(”:“::”右边的非法标记 error C2059: 语法错误:“::”

新建了一个win32的控制台工程,用到std::min函数,结果报错:
error C2589: “(”:“::”右边的非法标记
error C2059: 语法错误:“::”
解决办法:

  1. 加上括号 (std::min)(a, b) (std::max)(a, b)
  2. 设置项目属性,在预定义处理器中添加定义NOMINMAX来禁止使用VC的min/max宏定义。 在这里插入图片描述

原因: 项目中包含了windows.h,在windows.h中定义了宏max和min,所以调用std::min(a,b)会将min当做宏,std::就报错了。