[SOLVED] Qt5 + VS2010 QDateTime => not enough actual parameters for macro 'min' & 'max'
-
wrote on 22 Nov 2012, 10:56 last edited by
Hi,
I'm playing with Qt5 and have successfully compiled it from GIT under Windows 7 + VS 2010. It works(in most cases), but when I include <QDateTime> header it breaks whole compilation with following errors:@
1>c:\QT\QT5_X86_GIT\qtbase\include\QtCore/qdatetime.h(123): warning C4003: not enough actual parameters for macro 'min'
1>c:\QT\QT5_X86_GIT\qtbase\include\QtCore/qdatetime.h(124): warning C4003: not enough actual parameters for macro 'min'
1>c:\QT\QT5_X86_GIT\qtbase\include\QtCore/qdatetime.h(125): warning C4003: not enough actual parameters for macro 'max'
1>c:\QT\QT5_X86_GIT\qtbase\include\QtCore/qdatetime.h(123): error C2589: '(' : illegal token on right side of '::'
1>c:\QT\QT5_X86_GIT\qtbase\include\QtCore/qdatetime.h(123): error C2059: syntax error : '::'
1>c:\QT\QT5_X86_GIT\qtbase\include\QtCore/qdatetime.h(124): error C2589: '(' : illegal token on right side of '::'
1>c:\QT\QT5_X86_GIT\qtbase\include\QtCore/qdatetime.h(124): error C2059: syntax error : '::'
1>c:\QT\QT5_X86_GIT\qtbase\include\QtCore/qdatetime.h(125): error C2589: '(' : illegal token on right side of '::'
1>c:\QT\QT5_X86_GIT\qtbase\include\QtCore/qdatetime.h(125): error C2059: syntax error : '::'
@This lines in datetime.h header make VS go crasy:
@
static inline qint64 nullJd() { return std::numeric_limits<qint64>::min(); }
static inline qint64 minJd() { return std::numeric_limits<qint64>::min() / 2; }
static inline qint64 maxJd() { return (std::numeric_limits<qint64>::max()) / 2; }
@It happens only if you include <windows.h> in your project. And can be eliminated by defining NOMINMAX before windows.h headers. But it feels somehow broken...
Does anyone has this problem too?
-
wrote on 18 Dec 2012, 09:54 last edited by
Same problem, Qt5 RC2 Visual Studio 2010
-
wrote on 18 Dec 2012, 10:05 last edited by
#define NOMINMAX before including windows.h header. This is only way at the moment...
-
wrote on 29 Jan 2013, 08:19 last edited by
Hello,
on some projects I get the same warnings and errors, though there is no include of windows.h.
What else can cause this problem and how can I avoid it.Thanks for suggestions.
Edit: Setting a compiler switch "/DNOMINMAX" fixed the problem.
-
wrote on 1 May 2013, 20:12 last edited by
Yes, still the same problem here: Qt5.0.2 32bit MSVC2010
-
wrote on 25 Jun 2013, 17:04 last edited by
Hitting with 5.1.0 RC2 as well. I am using 32 bit MSVC2010 and the default variant (angel?).
-
wrote on 12 Jul 2013, 17:34 last edited by
Did you try switching to VS2012? I encountered the same problem
-
wrote on 12 Jul 2013, 17:41 last edited by
You should define NOMINMAX when including <windows.h>. Period. And WIN32_LEAN_AND_MEAN, by the way.
-
wrote on 12 Jul 2013, 17:47 last edited by
@MaximAlien: Nope, the customer was stuck to 2010.
@Violet Giraffe: yes, it was mentioned above what to do, so we are aware of that. However, it would be nice to fix centrally in the Qt Project if possible. If not, it would be nice to be aware of the limitation why it is not possible.
-
wrote on 12 Jul 2013, 17:52 last edited by
Defining like that:
@#define NOMINMAX
#include <windows.h>@
doesn't help me. Can you help me guys?I have compilation errors in:
@static inline qint64 nullJd() { return std::numeric_limits<qint64>::min(); @I have 2 windows.h includes in other classes.
-
wrote on 12 Jul 2013, 17:55 last edited by
MaximAlien: have you tried "/DNOMINMAX"?
or DEFINES += NOMINMAX with qmake?
-
wrote on 12 Jul 2013, 18:00 last edited by
Thanks for help Laszlo! Defining @DEFINES += NOMINMAX@ in pro file helped me.
-
wrote on 29 Jul 2013, 09:20 last edited by
Use this include "#include <*qt_*windows.h>" instead of #include <windows.h>
-
wrote on 29 Jul 2013, 09:47 last edited by
sdolard: the problem is that, it does more than what you need, so not compact enough. :)
More importantly, you need to find and maintain the right place for the include. If you do it in the build system, it always works.
Also, even though qt_windows.h is installed publicly, you could include anytime. However, if you wanna be nice, you would use qt win ifdefs around just in case, but then it is getting uglier. :)
But yes, provided those drawbacks are not real problems, that also works.
-
wrote on 14 Sept 2013, 04:48 last edited by
[quote author="AcerExtensa" date="1355825116"]#define NOMINMAX before including windows.h header. This is only way at the moment...[/quote]
Hi
i had the same problem and got it working by following your suggestion.
thx. -
wrote on 30 Aug 2014, 14:12 last edited by
This thread helped me out with this issue. THANK YOU.
-
wrote on 10 Sept 2014, 11:12 last edited by
Hi,
I have the same problem, but without an include of windows.h. So I can not enter a define before it and including
DEFINES += NOMINMAX
in the pro-file did'nt worked either.
Any more ideas? -
wrote on 11 Sept 2014, 22:58 last edited by
Hi,
since I started the project I had to reinstall windows and so qt creator. Originaly i used mingw. Now I also installed mingw, but somehow the installation was not compleat and qt creator used msvc instead. After swiching back to mingw I got rid of the error. So it's solved for me, but others might have the same problem.
Dimitri