为什么使用QT5会出现如下错误?

why received the following error when using QT5?

我在使用 QT5 构建示例代码时遇到以下错误,Visual Studio 2012 x64,

static inline qint64 nullJd() { return std::numeric_limits<qint64>::min(); }

1>c:\qt\qt5.1.1.1.1\msvc2012_64_opengl\include\qtcore\qdatetime.h(121): warning C4003: not enough actual parameters for macro 'min'
    1>c:\qt\qt5.1.1.1.1\msvc2012_64_opengl\include\qtcore\qdatetime.h(121): error C2589: '(' : illegal token on right side of '::'
    1>c:\qt\qt5.1.1.1.1\msvc2012_64_opengl\include\qtcore\qdatetime.h(121): error C2059: syntax error : '::'

如何修复?

这应该可以为您解决:https://forum.qt.io/topic/21605/solved-qt5-vs2010-qdatetime-not-enough-actual-parameters-for-macro-min-max/5

C++ min/max 宏调用错误。 所以你可以在调用header之前设置NOMINMAX来求解。

有几种方法可以实现这一点,正如我发送的 link 中所描述的那样。

即:

#define NOMINMAX
#include <windows.h>

或者设置编译参数/DNOMINMAX

或者传给qmake项目:DEFINES += NOMINMAX

而不是使用

<Windows.h> 

你也可以使用

<qwindows.h>

它负责这些东西或使用 NOMINMAX