c++ - numero - std:: max-se esperaba un identificador
se esperaba un identificador visual basic (5)
Estoy teniendo un problema con std::max
. No puedo resolverlo.
int border = 35;
int myInt = 2;
int myOtherInt = 3;
int z = std::max(myInt + 2 * border, myOtherInt + 2 * border);
He incluido el encabezado estándar del algoritmo. Cuando muevo el mouse sobre max, obtengo:
Error: se esperaba un identificador
Y un error de compilación de:
error C2589:
''(''
: token ilegal en el lado derecho de''::''
error C2059: error de sintaxis:''::''
¿Qué está mal?
¿Has probado usar ::std::max
lugar? Si esto no funciona, algo está jugando con tu espacio de nombres estándar.
Diría que max
es #define
a otra cosa o que necesitas invocar explícitamente la plantilla a través de std::max<int>
.
La declaración de "uso" (consulte el uso de Declaración ) es otra forma de evitar el problema:
int border = 35;
int myInt = 2;
int myOtherInt = 3;
using std::max;
int z = max(myInt + 2 * border, myOtherInt + 2 * border);
Permite usar std :: max sin calificación explícita.
Poniendo en peligro una conjetura, ya que estás usando VC ++ - pon esto antes de cualquier #include
s:
#define NOMINMAX
windows.h
define las macros denominadas min
y max
manera:
#define min(a,b) (((a) < (b)) ? (a) : (b))
#define max(a,b) (((a) > (b)) ? (a) : (b))
El SDK de Windows ha contenido estas macros desde antes de que C ++ estuviera estandarizado, pero como obviamente NOMINMAX
estragos en la biblioteca estándar de C ++, se puede definir la macro NOMINMAX
para evitar que se definan.
Como regla, si usa C ++ (en lugar de C) e incluye windows.h
, siempre defina primero NOMINMAX
.
Si usa VC ++, puede usar #define NOMINMAX
antes de incluir cualquier encabezado, o do (std::max)(myInt + 2 * border, myOtherInt + 2 * border)