У меня есть следующие предупреждения при компиляции проекта openFrameworks 007 в 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'
Из того, что я мог сказать, за этими предупреждениями обычно следуют ошибки, но в моем случае все работает нормально. Поврежденный код ниже:
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() );
Я попытался установить NOMINMAX на препроцессор, но поскольку openFrameworks также определяет NOMINMAX on ofConstants.h, я получаю кучу предупреждений, которые уже определены NOMINMAX.
Я попытался определить NOMINMAX на поврежденных файлах openFrameworks, но это приводит к тому же предупреждению (фактически, если я анализирую файлы, включенные в ofColor.h и ofPixel.h, они в конечном итоге включают в себя theConstants.h, поэтому NOMINMAX следует определить).
Любая идея о том, как это решить? Если вы не... что было бы лучше? Это предупреждения или куча предупреждений о том, что NOMINMAX уже определен?
EDIT:
Кстати, когда я говорил об ошибках, о которых я говорил: предупреждение C4003 и ошибки C2589 и C2059: x = std:: numeric_limits <int> :: max();
Я получаю это (предупреждение плюс 2 ошибки), если я попытаюсь воспроизвести проблему на чистом проекте С++. Но в моем проекте openFrameworks я просто получаю предупреждения. Вот почему я запутался!!