C2440编译错误:__cplusplus编译选项引发的

简介: C2440编译错误:__cplusplus编译选项引发的
  • error C2440: “=”: 无法从“_Ty”转换为“T”


// qhashfunctions.h
// like std::exchange
template <typename T, typename U = T>
Q_DECL_RELAXED_CONSTEXPR T qExchange(T &t, U &&newValue)
{
    T old = std::move(t);
    t = std::forward<U>(newValue); // here
    return old;
}


  • error C2440: “reinterpret_cast”: 无法从“int”转换为“quintptr”


// qglobal.h
Q_DECL_CONST_FUNCTION inline uint qHash(std::nullptr_t, uint seed = 0) noexcept
{
    return qHash(reinterpret_cast<quintptr>(nullptr), seed);// here
}


排查了好久,提示无法从int转换为qunitptr,可是nullptr怎么是int呢?


最终发现httpglobal.h发现有重定义nullptr,问题就出在这个为什么导致重定义上?


image.png


问题就出在这个__cplusplus上,查阅资料发现,这个是vs的历史遗留问题,增加编译选项/Zc:__cplusplus即可


image.png


CMake中增加编译选项:


if(MSVC)
    target_compile_options(${APP_NAME} PUBLIC "/Zc:__cplusplus")
endif()
目录
相关文章
|
缓存 Ubuntu Linux
Vim编辑器入门指南:安装、基本操作和高级技巧详解 | 适用于Linux系统
Vim编辑器入门指南:安装、基本操作和高级技巧详解 | 适用于Linux系统
2566 0
|
21天前
|
Web App开发 JavaScript 前端开发
nvm安装、下载使用详情 - node版本管理工具
nvm是一个node的版本管理工具,可以简单操作node版本的切换、安装、查看。。。等等,与npm不同的是,npm是依赖包的管理工具。
297 5
|
设计模式 存储 算法
《设计模式:可复用面向对象软件的基础(典藏版)》
本书是埃里克·伽玛著作,涵盖180个笔记,主要介绍面向对象设计模式,包括MVC、设计模式编目、组织编目、实现描述、复用机制、运行时与编译时结构关联、设计支持变化等方面。书中详细解释了23种设计模式,如Abstract Factory、Adapter、Bridge、Builder等,按创建型、结构型、行为型分类,旨在提高软件可复用性和灵活性。
1111 0
《设计模式:可复用面向对象软件的基础(典藏版)》
|
设计模式 算法 C++
C++架构之美:设计卓越应用
C++架构之美:设计卓越应用
901 3
|
JavaScript
vue组件封装 —— 仪表盘(有缺口的环形进度条内显示百分比值)
vue组件封装 —— 仪表盘(有缺口的环形进度条内显示百分比值)
483 1
|
图形学
【推荐100个unity插件之2】 DoTween动画插件的安装和使用整合(最全)
【推荐100个unity插件之2】 DoTween动画插件的安装和使用整合(最全)
1781 0
|
存储 JavaScript 前端开发
基于SpringBoot+Vue高校校园点餐系统【源码(完整源码请私聊)+论文+演示视频+包运行成功】(1)
基于SpringBoot+Vue高校校园点餐系统【源码(完整源码请私聊)+论文+演示视频+包运行成功】
413 0
|
存储 Linux 编译器
Linux平台上DPDK入门指南:快速提升网络性能的利器
Linux平台上DPDK入门指南:快速提升网络性能的利器
|
SQL JavaScript 前端开发
若依框架代码自动生成器研究----表查询篇
若依框架代码自动生成器研究----表查询篇
1256 0
|
JSON 关系型数据库 MySQL
Mysql时区差8个小时问题解决
Mysql时区差8个小时问题解决
727 1

热门文章

最新文章