Macro kollidiert mit STL
-
Hallo, ich habe versucht folgenden Code unter Visual C++ zu kompilieren:
#include <limits> #include <cstdlib> #include <windows.h> int main() { if( std::numeric_limits<unsigned long>::max() == RAND_MAX ) ; }
Als Fehler erhalte ich:
(7) : warning C4003: Nicht genügend übergebene Parameter für das Makro 'max' (7) : error C2589: '(': Ungültiges Token auf der rechten Seite von '::' (7) : error C2059: Syntaxfehler: '::'
Der Fehler tritt nur auf, wenn windows.h inkludiert wird, da sich in windows.h (genauer windef.h, die von windows.h inkludiert wird) ein macro namens max befindet.
#ifndef max #define max(a,b) (((a) > (b)) ? (a) : (b)) #endif
Kann ich irgendwie die static funktion max aus <limits> benutzen und TROTZDEM windows.h in meinem Projekt verwenden?
-
#undef max
-
NOMINMAX
-
Vielen Danke! Funktioniert!