62 Stimmen

Warnung C4003 und Fehler C2589 und C2059 bei: x = std::numeric_limits<int>::max();

Diese Zeile funktioniert in einem kleinen Testprogramm korrekt, aber in dem Programm, für das ich sie benötige, erhalte ich die folgenden Compiler-Beschwerden:

#include <limits>

x = std::numeric_limits<int>::max();

c:\...\x.cpp(192) : warning C4003: not enough actual parameters for macro 'max'
c:\...\x.cpp(192) : error C2589: '(' : illegal token on right side of '::'
c:\...\x.cpp(192) : error C2059: syntax error : '::'

Ich erhalte die gleichen Ergebnisse mit:

#include <limits>
using namespace std;

x = numeric_limits<int>::max();

Warum wird max als das Makro max(a,b); gesehen?

0voto

Andrew Punkte 4502

Seine Definition in für mich in Visual Studio 2013 (formatiert für bessere Abstände...) ist wie folgt:

static _Ty (max)() _THROW0()
{   // return maximum value
    return (FLT_MAX);
}

Also benutze ich einfach FLT_MAX :) Dies kann nicht eine universelle Lösung sein, aber es funktioniert gut in meinem Fall, so dass ich dachte, ich würde teilen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X