18 ноября 2010

(std::max)

Как-то давно я советовал бороться с макросами min/max из windows.h таким образом:
#include <windows.h>

#ifdef min
#undef min
#endif

#ifdef max
#undef max
#endif
Напомню в чем суть проблемы: после включения windows.h уже нельзя писать std::max(a,b). Оказывается все гораздо проще: можно писать (std::max)(a,b). Препроцессор обойдет такую запись стороной. Тогда не нужны undef-ы (актуально если потом вдруг нужно включить что-нибудь типа atl*.h).