首页 > 其他分享 >std::numeric_limits::max和宏定义重复报错问题

std::numeric_limits::max和宏定义重复报错问题

时间:2024-06-03 15:43:30浏览次数:21  
标签:std limits max numeric 报错 uint32

std::numeric_limits::max和宏定义重复报错问题

问题描述

今天在编译Beckhoff ADS开源组件的时候发现编译报错,报错代码如下

long AdsDevice::ReadReqEx2(uint32_t group, uint32_t offset, size_t length, void* buffer, uint32_t* bytesRead) const
{
    if (length > std::numeric_limits<uint32_t>::max()) {
        return ADSERR_DEVICE_INVALIDSIZE;
    }
    return AdsSyncReadReqEx2(*m_LocalPort, &m_Addr, group, offset, static_cast<uint32_t>(length), buffer, bytesRead);
}

报错信息

image

可以看到:std::numeric_limits模板类里边的成员函数和宏定义max(a,b)重复了,所以编译器报错,鼠标进去打开minwindef.h查看max函数的实现

image

解决办法

就是这个NOMINMAX的宏默认开启了,在CMakeLists.txt文件里边加上一句话(屏蔽它)就可以解决了

add_definitions(-DNOMINMAX)

标签:std,limits,max,numeric,报错,uint32
From: https://www.cnblogs.com/hywing/p/18229028

相关文章

  • CMakeFile.txt通过sysroot方式后生成makefile报错
    怪不得博客园干不过别家,体验真的不太好。通过openwrite发布文章,其他平台都能发布,就博客园限制了,理由是文字少的文章限制发布到该平台。哎,这种行为当真是扶不起的阿斗。以后也不要太把博客园当回事了,迟早要关门的报错信息如下:--TheCcompileridentificationisunknown--T......
  • 【Docker】docker-compose文件快速部署RustDesk远程桌面平替TeamViewer
    1.服务器安装Docker服务2.创建docker-compose.yaml文件version:'3'networks:rustdesk-net:external:falseservices:hbbs:#RustDeskID/Rendezvous服务器container_name:hbbsports:-21115:21115#用于NAT类型测试的TCP......
  • git 命令报错:Another git process seems to be running in this repository, e.g. an
    执行git命令时,报错:Anothergitprocessseemstoberunninginthisrepository,e.g.aneditoropenedby'gitcommit'.Pleasemakesureallprocessesareterminatedthentryagain.Ifitstillfails,agitprocessmayhavecrashedinthisrepository......
  • 联想打印机更换硒鼓后仍旧报错,如何做硒鼓计数器清零?
        在联想打印机的使用过程中,硒鼓是一个重要的耗材,它直接影响到打印质量和打印机的运行。通常,当打印机显示硒鼓错误或者打印质量下降时,更换新的硒鼓是一个常见的解决方案。然而,有时候即使更换了新的硒鼓,打印机仍然会报错,这可能是由于硒鼓计数器没有清零导致的。  ......
  • svg图片放img标签报错解决办法
    错误代码:<divv-if="item.showType=='2'":id="'tag'+index"class="tag-icon-text"@click="tagClick(item)"><imgsrc="@/assets/images/flag.jpg"class="img"/>......
  • 解决安装cuda时vs报错MSB3721的问题
    以下几种可能1.调整调试平台为x642.点击vs顶部导航栏的调试->最下面那一项属性->CUDAC/C++->Common->CUDADustuomDir设置为你安装CUDAtoolkit的目录3.如果你的电脑系统用户名为中文,请前往环境变量->用户变量,将tmp和temp的值修改为一个新文件夹(建议在D盘里面创建一个tem......
  • vscode 报错:应输入表达式
    如图,报错:应输入表达式,但是我的==看起来是正确的。后面发现原来是我的定义有问题,这里定义处多了分号“;”,然后vscode检测不到该定义,故会报错。......
  • springboot本地运行正常,打包jar包上传Linux服务器后报错,无法正常运行解决方法
    问题描述:springboot本地运行正常,打包jar包上传Linux服务器后报错,无法正常运行说明:以下两种打包方式均在IDEA软件内完成,上传服务器使用宝塔面板管理1.第一次打包方式; 设置完打包路径后,进入build菜单进行打包:  选择build或rebuild进行打包,打包后上传jar包到服务器,运......
  • [ROS报错问题]SystemError: initialization of cv_bridge_boost raised unreported ex
            在运行ROS代码时,很多人会使用到cv_bridge库,这个库的主要功能是帮助在ROS的图像消息(sensor_msgs/Image)和OpenCV的图像格式(cv::Mat)之间进行转换。然而,有时在使用cv_bridge时会遇到一个让人头疼的问题,即报错:fromcv_bridge.boost.cv_bridge_boostimportcvt......
  • matlab 2024a 在只有核显的机器上opengl报错的问题 X11GLXDrawableFactory
    com.jogamp.opengl.GLException:X11GLXDrawableFactory-CouldnotinitializesharedresourcesforX11GraphicsDevice[type.x11,connection:0,unitID0,handle0x0,ownerfalse,ResourceToolkitLock[obj0x37e10dfd,isOwnerfalse,<4dd74231,25b2e611>[c......