首页 > 其他分享 >std::max、std::min error C2589: “(”:“::”右边的非法标记,error C2059: 语法错误:“::” (转)

std::max、std::min error C2589: “(”:“::”右边的非法标记,error C2059: 语法错误:“::” (转)

时间:2023-12-28 12:11:26浏览次数:33  
标签:std 语法错误 min Windows max NOMINMAX error include

个人采用方案三解决问题。

在VC++种同时包含头文件#include <windows.h>和#include <algorithm>后就会出现无法正常使用std标准库中的min和max模板函数,经过查阅发现这是因为在Windows.h种也有min和max的定义,这样就导致了algorithm中的min和max无法正常使用,这里给出两种解决方案,来解决std命名空间无法使用min和max的问题。

解决方案一

使用std::min或者std::max的时候加上括号,避免与Windows.h中的min、max宏定义冲突。

#include <windows.h>
#include <algorithm>
(std::min)(100,2000);
(std::max)(10,500);

解决方案二

禁用Windows.h中的min、max宏定义。

在Windows.h中可以查阅到min、max的定义为:

复制代码
#ifndef NOMINMAX
 
#ifndef max
#define max(a,b)            (((a) > (b)) ? (a) : (b))
#endif
 
#ifndef min
#define min(a,b)            (((a) < (b)) ? (a) : (b))
#endif
 
#endif  /* NOMINMAX */
复制代码

看懂了定义就很简单了,在包含Windows.h文件之前直接定义一个NOMINMAX宏定义就OK了,如下代码所示:

#define NOMINMAX
#include <windows.h>
#include <algorithm>
std::max(100, 200);

解决方案三:

这个解决办法与第二个本质是一样的。具体方法为:打开工程属性->C/C++->预处理器->预处理器定义->加入NOMINMAX

 

 

OK,经过上面的操作,min,max操作已经正常了。

https://www.cnblogs.com/rainbow70626/p/9073017.html

标签:std,语法错误,min,Windows,max,NOMINMAX,error,include
From: https://www.cnblogs.com/xihong2014/p/17932430.html

相关文章

  • 享元设计模式 和 享元设计模式在 FastDateFormat类中的应用
    1.概述享元设计模式(FlyweightPattern):通过尽量共享实例来避免new出实例。享元设计模式中有两个角色,一是要共享的实例,二是获取或创建这些共享实例的工厂。举一个例子:例如String常量池,大家创建的String常量,创建String的时候,先去常量池中看一下,有该String常量直接使用该常量,如果没......
  • Rust error : usize 类型不能进行 - 操作
    return(-low-1asisize)asisize;cannotapplyunaryoperator-Rust编写程序时候usize类型进行-1运算时报的错误写了下BinarySearch,对于if判断修正为平衡版本,同时解决了取得的midVal已经获取其下标,不必等其缩小完边界。以下是第一种较差的实现方式。fnbinar......
  • Nextjs SyntaxError: Cannot use import statement outside a module错误
    NextJs报 SyntaxError:Cannotuseimportstatementoutsideamodule第三方依赖不能导入问题 解决方案:1,Next.JS13.1+,可以使用next.config.js中的属性transpilePackagesconstnextConfig={transpilePackages:['the-npm-package'],//第三方的依赖};module.expo......
  • Internal connection fatal error
    Internalconnectionfatalerror错误信息mssql数据库的一个错误。打开mssql数据库连接的时候会报出这个错误。System.InvalidOperationExceptionHResult=0x80131509Message=Internalconnectionfatalerror.Source=System.Data.SqlClientStackTrace:--一大段......
  • k8s 安装kubesphere3.4.1 多次安装报错 Error from server (InternalError): Internal
    failed:[localhost](item={'ns':'kubesphere-system','kind':'users.iam.kubesphere.io','resource':'admin','release':'ks-core'})=>{"ansible_loop_var":"......
  • 解决前端vue2报错 Error: Can't resolve cache-loader和Error: Can't resolve babel-l
    总得说来报这种Error:Can'tresolve+模块名字的错误,一般就只有两种原因:一、少了这个包(直接安装:pnpmadd-D模块名字@版本),二、有这个包,但是版本在package.json中不正确。需要和你的vue/cli-service的版本对应上,该降级的时候降级,降级一般先删除再安装新的pnpmremovecss-loaderpn......
  • 【HMS Core】{"sub_error":20003,"error_description":"parameter invalid",&
    ​ 【问题描述】离线推送服务端报错{"sub_error":20003,"error_description":"parameterinvalid","error":1101} 【解决方案】错误码1101代表是client_id在系统中不存在,需要检查一下APPID是否配置正确​​......
  • rust call sqlite3 error: linking with `link.exe` failed: exit code: 1181
    rustcallsqlite3error:linkingwithlink.exefailed:exitcode:1181声明:本文禁止csdn.net及所有所有子网站转载。禁止以营利性为目的的转载。报错error:linkingwith`link.exe`failed:exitcode:1181......
  • 微信小程序测试框架minium 报错MiniCommandError: timeout问题排查和解决
    系统:win10python版本:3.11.7minium版本:1.4.6微信开发工具版本:1.06.2310080运行minitest官网的一个简单例子,内容如下#!/usr/bin/envpython3importminiumclassFirstTest(minium.MiniTest):deftest_get_system_info(self):sys_info=self.mini.get_sys......
  • Windows下GetLastError()返回值
    通常,我们在调用windows系统API函数时,不可避免地出现调用失败的情况,为了及时地捕获异常错误信息,需要在调用接口返回失败的地方调用GetLastError(),例如:HANDLEhFileHandle=CreateFileW(filepath,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);if(hFileHandle......