zoukankan      html  css  js  c++  java
  • 【转】解决warning C4003: “min”宏的实参不足

    错误信息如下:

    1>f:qtqt5.1.15.1.1msvc2010includeqtcoreqdatetime.h(121): warning C4003: “min”宏的实参不足
    1>f:qtqt5.1.15.1.1msvc2010includeqtcoreqdatetime.h(121): error C2589: “(”:“::”右边的非法标记
    1>f:qtqt5.1.15.1.1msvc2010includeqtcoreqdatetime.h(121): error C2059: 语法错误:“::”

    原因分析:

    windows.h中定义了min宏,<QTime>中也有这个定义,两者冲突
    windows.h中Microsoft定义了min/max两个宏,Qt中定义的min/max两个宏虽然在自己的命名空间中,可还是被“污染”了。

    解决方法1:

    把include头文件顺序颠倒!
    #include <windows.h>#include <QTime>
    修改为#include <QTime>#include <windows.h>

    解决方法2:

    max前后用小括号括起来,在满足C++语法的同时,骗过了编译器的宏替换:

    const double MAXDOUBLE = (std::numeric_limits<double>::max)();

    解决方法3:

    所有引用 windows.h的地方:  #include <windows.h>
    换成 #include <qt_windows.h>
    里面已经有qt对windows.h的适应化修改:

    #ifndef NOMINMAX                       
    #  define NOMINMAX
    #endif
    #include <windows.h>

     解决方法4:

    又解决方法3可以看出,在使用windos.h之前定义 NOMINMAX即可

     

    //其实我的更简单,因为是自定义类中定义了max()和min()函数,所知知道原因之后,直接把函数改名字了

    o(∩_∩)o

  • 相关阅读:
    bstToDoublyList
    Springboot系列1_什么是Springboot
    servlet总结
    JavaFx开发桌面软件
    在Emacs中使用plantuml画UML图
    IIS7.0上传文件限制的解决方法
    开源免费的天气预报接口API以及全国所有地区代码(国家气象局提供)
    如何得到天气情况?在那个接口获取?
    Windows Update 时出现8024402C的错误
    OC中copy的使用
  • 原文地址:https://www.cnblogs.com/zsclucien/p/3574130.html
Copyright © 2011-2022 走看看