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).

3 комментария:

Basilevs комментирует...

Две точки, или четыре?

Анонимный комментирует...

#define NOMINMAX
#include

тоже помогает.

Raider комментирует...

> Две точки, или четыре?

две по две

>#define NOMINMAX
>#include
>тоже помогает.

тогда с atl-ными и wtl-ными заголовками будет проблема