MFC-error C2589: “(”:“::”右边的非法标记
错误信息
① 错误 C2589 “(”:“::”右边的非法标记
② 错误 C2059 语法错误:“)”
出错语句
inline double
getFitnessScore (double max_range = std::numeric_limits<double>::max());
其中的std::numeric_limits<double>::max()报错了
问题原因
网上查到说函数模板max与Visual C++中的全局的宏max冲突
goto之后发现本应该是函数的max()定位到了minwindef.h下的
#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 */
也就是说,c++在编译的时候,首先解析宏定义,把本应该是函数的std::numeric_limits<double>::max()解析成了宏,发生了冲突。
解决办法:
网络上推荐了几个办法,翻了一圈解决了这个问题,做一下记录,分享给出现这个问题的朋友做个参考。
方法1:使用min或者max的时候加上括号。
首先和其他的教程中一样不推荐这个方法,因为拿我这个案例来说,出错的点是PCL库中的文件,尽量不要修改;
这个我也尝试了一下,推荐这个的帖子,涉及到的函数是std::min,std::max,尝试了帖子中推荐的加括号的方式,以及自己想着把括号换一下位置,但是加入之后都没有解决,就都复原了。
方法2:在头文件添加#define NOMINMAX ,或者预处理器添加NOMINMAX。
添加后,报错没有解决,而且多出来了
C3861 “min”: 找不到标识符 mfc_bin C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\GdiplusTypes.h C3861 “max”: 找不到标识符 mfc_bin C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\GdiplusTypes.h 481
出问题的点增加了GdiplusTypes.h,直接关掉min,max宏的定义还是有问题。
方法3:#undef max 和 #undef min (亲测有效)
首先找到出报错的头文件的位置,把#include <windows.h>提前到该头文件之前包含 (关键步骤);
然后在包含报错的头文件之前加入:
#undef max
#undef min
这两句话,目的是先将宏定义min和max编译通过windows.h,再解除min和max的宏定义,让min和max函数编译通过之前报错的头文件。
原文链接:https://blog.csdn.net/qq_31437541/article/details/113667722
翻译
搜索
复制
MFC-error C2589: “(”:“::”右边的非法标记的更多相关文章
- error C2589: “(”: “::”右边的非法标记 error C2059: 语法错误 : “::
1. 错误输出 ./zlibrary/ui/src/win32/w32widgets/W32VBorderBox.cpp(114) : error C2589: “(”: “::”右边的非法标记 ...
- PCL -语法错误:“::” error C2589: “(”:“::”右边的非法标记
1.错误原因:系统函数与pcl中的max函数冲突导致的 2.两种解决办法: 1)错误中max和min函数用括号括起来,例如"std::Max"修改为“(std::Max)”. 2) ...
- std::max、std::min error C2589: “(”:“::”右边的非法标记,error C2059: 语法错误:“::”
在VC++种同时包含头文件#include <windows.h>和#include <algorithm>后就会出现无法正常使用std标准库中的min和max模板函数,经过查 ...
- max 宏定义取消:error C2589: error C2059: 语法错误 : “::”
原文链接:http://blog.csdn.net/danelumax2/article/details/9172465有修改! 一:关于Pcl和WIndef的冲突: 1. 错误输出 ./zlibra ...
- std::numeric_limits<int>::max() error C2589: '(' : illegal token on right side of '::' 解决办法
int max =std::numeric_limits<int>::max(); 根据错误提示: f:\code\cpp\webspider\main.cpp(47) : war ...
- “Error:(1, 1) java: 非法字符: '\ufeff'”错误解决办法
原因 用Windows记事本打开并修改.java文件保存后重新编译运行项目出现“Error:(1, 1) java: 非法字符: '\ufeff'”错误,如下图所示: 原来这是因为Window ...
- idea Error:(1, 10) java: 需要class, interface或enum, 未结束的字符串文字,Error:(55, 136) java: 非法字符: \65533
1.未结束的字符串文字,Error:(55, 136) java: 非法字符: \65533 这些乱七吧八遭的错误如果很多的话 , 尝试 重新修改下生成目录 修改下语言等级 上述方法都不行 ,还报错 ...
- Error:(1, 1) java: 非法字符: ‘\ufeff’
一.问题 用IDEA打开eclipse java项目编译时,出现以下错误: Error:(1, 1) java: 非法字符: '\ufeff' Error:(1, 10) java: 需要class, ...
- error C4995: “wcscpy”: 名称被标记为 #pragma deprecated
1>c:\program files (x86)\microsoft visual studio\2017\professional\vc\tools\msvc\14.16.27023\atlm ...
- 问题解决——MFC error RC2170: bitmap file res\XXXXXXX.png is not in 3.00 format
=================================版权声明================================= 版权声明:原创文章 谢绝转载 请通过右侧公告中的“联系邮 ...
随机推荐
- day06-Hello World案例
HelloWorld 象征着作为一个程序员向世界的第一声呐喊 新建一个文件夹用来存放代码 新建一个java文件 文件后缀名为.java Hello.java [注意]系统可能没有显示文件的后缀名,需要 ...
- WSL默认安装目录
我当前在win11下进行以下操作,其它系统版本有问题可以留言 一.安装WSL 前提条件:我们需要保证你的操作系统版本满足 **Windows 10 版本 2004 及更高版本(内部版本 19041 及 ...
- 云原生爱好者周刊:在 PaaS 平台上托管 WebAssembly 应用
云原生一周动态要闻: Knative v1.1 发布 Nocalhost v0.6.12 发布 CircleCI 的企业功能现在免费了 SolarWinds 修复了一个 Serv-U 漏洞 Nvidi ...
- 顺序表(python)
文章目录 1.创建顺序表 2.按址查找元素的位置 3.增加元素 3.1在头部增加元素 3.2在尾部增加元素 3.3在中间任意位置增加元素 4.删除元素 4.1删除第一个元素 4.2删除指定的元素 5. ...
- 快速上手 KSQL:轻松与数据库交互的利器
上次我们通过 Docker 安装了 KingbaseES 数据库,今天我们将开始学习并快速上手使用 KSQL.简单来说,KSQL 本质上是一个客户端工具,用于与数据库进行交互.启动后,我们可以像使用普 ...
- 使用NTP,该如何同步时间?一文详解!
一.NTP通信概述 很多场景中,由于业务需要,模块需要保持正确的系统时钟,才能正常工作.但是模块上电后的初试时间戳是946713600(即2000/01/01,16:00:00),所以同步时钟成为 ...
- 【FAQ】HarmonyOS SDK 闭源开放能力 —Share Kit
1.问题描述: 使用系统分享组件分享本地文件,点击分享菜单下方的"另存为" 将要分享的文件分享至系统文件管理中,在文件管理中查看分享进来的文件为0B.尝试了3种uri的写法都不行, ...
- P4229 某位歌姬的故事
P4229 某位歌姬的故事 处理复杂点的 dp 题. 思路 先考虑 \(n\) 比较小的情况,把每个询问放到线段上,发现每个格子只能满足覆盖最小的限制,于是考虑将询问有效区间排序考虑. 设 \(f[i ...
- NetBox使用教程1-组织架构
前言 本教程用于学习NetBox的基础使用,练习可使用官方Demo:https://demo.netbox.dev/ NetBox 使用教程系列:https://songxwn.com/tags/ne ...
- memcached简介及java使用方法
一. 概念 Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能. 二. 适用场合 1. 分布式应用 ...