2014-03-30 5 views
9

Wie würde ich eigentlich std :: max aufrufen? Der Code wird in Visual Studio 2013 nicht kompiliert, da er "max" als Makro benötigt.Kann nicht std :: max aufrufen, da minwindef.h "max" definiert

std::max(...); 

Erwartet einen Bezeichner nach dem "std ::".

+0

Haben Sie "cmath" aufgenommen? '#include ' –

+1

@ user9000 'std :: max' ist in' '. Das Problem ist ein freches VS-Makro. – juanchopanza

Antwort

7

können Sie undefine das Makro:

#undef max 

bearbeiten: Es scheint, die Makros sicher, indem

#define NOMINMAX 

vor den Header-Dateien, die sie definieren kann deaktiviert werden (höchstwahrscheinlich windef.h, die Sie wahrscheinlich indirekt einschließen).

+0

Konnte das nicht Dinge brechen, die auf dem Max-Makro beruhen? – Ben

+0

@Ben Wahrscheinlich. Ich habe ein Duplikat gefunden, sieh dir das an. Du brauchst vielleicht eine Art von Wachen. Ich benutze VS nicht, also kenne ich nicht die Auswirkungen von einfach undefing. – juanchopanza

+0

Okay, ich habe NOMINMAX definiert. Funktioniert perfekt. Vielen Dank. – Ben