redist - Advertencia C4003: no hay suficientes parámetros reales para macro ''max''-Visual Studio 2010 C++
microsoft visual c++ 2010 windows xp (2)
Agregue #undef max
a la parte superior de los archivos relevantes.
Tengo las siguientes advertencias al compilar un proyecto openFrameworks 007 en Visual Studio 2010 SP1:
d:/pedro/development/videoflow/openframeworks/libs/openframeworks/types/ofcolor.h(127): warning C4003: not enough actual parameters for macro ''max''
d:/pedro/development/videoflow/openframeworks/libs/openframeworks/types/ofcolor.h(128): warning C4003: not enough actual parameters for macro ''max''
d:/pedro/development/videoflow/openframeworks/libs/openframeworks/graphics/ofpixels.h(150): warning C4003: not enough actual parameters for macro ''max''
d:/pedro/development/videoflow/openframeworks/libs/openframeworks/graphics/ofpixels.h(151): warning C4003: not enough actual parameters for macro ''max''
Por lo que pude decir, estas advertencias generalmente son seguidas por errores, pero en mi caso todo funciona bien. El código afectado está abajo:
const float srcMax = ( (sizeof(SrcType) == sizeof(float) ) ? 1.f : numeric_limits<SrcType>::max() );
const float dstMax = ( (sizeof(PixelType) == sizeof(float) ) ? 1.f : numeric_limits<PixelType>::max() );
Intenté configurar NOMINMAX en el preprocesador pero, dado que openFrameworks también define NOMINMAX en ofConstants.h, recibo un montón de advertencias de que NOMINMAX ya está definido.
He intentado definir NOMINMAX en los archivos de openFrameworks afectados pero resulta en la misma advertencia (de hecho, si analizo los archivos incluidos en Color.h y en Pixel.h, terminan incluyendoConstantes.h, por lo que debe definirse NOMINMAX).
Alguna idea sobre como resolver esto? Si no ... ¿qué sería lo mejor? ¿Estas advertencias o un montón de advertencias de que NOMINMAX ya está definido?
EDITAR:
Por cierto cuando hablé sobre errores, estaba hablando de estos: advertencia C4003 y errores C2589 y C2059 en: x = std :: numeric_limits <int> :: max ();
Obtengo esto (la advertencia más 2 errores) si trato de reproducir el problema en un proyecto limpio de C ++. Pero en mi proyecto de openFrameworks recibí las advertencias. ¡¡Por eso me confundo !!
No eres el primero en ser mordido por estas macros antiguas. No pueden eliminarlos, eso rompería el código anterior. Entonces se les ocurrió otra macro para eliminar el aguijón. Haz que se vea así:
#ifndef NOMINMAX
# define NOMINMAX
#endif
#include <windows.h>
// Rest of your #includes here
//...