Как уже отмечали другие, в том числе windows.h
, вероятно, ваша проблема. Microsoft предоставляет средства для «отключения» частей windows.h
с помощью символов препроцессора. Вы можете определить эти символы как часть вашей сборки или непосредственно в коде.
Использование символов препроцессора для условного пропуска секций windows.h
может или не может считаться элегантным, но в общем случае это более простое, более общее и более масштабируемое решение, чем #undef
.
Вот как пропустить определение min
или max
как макроса:
#define NOMINMAX
#include <windows.h>
Обратите внимание, что многие включаемые файлы в какой-то момент будут включать windows.h
. В таких случаях настройка ваших определений на более глобальном уровне может быть более удобной.
Если вы ищете через windows.h
, вы можете найти множество других символов препроцессора (например, NOOPENFILE
, NOKANJI
, NOKERNEL
и многие другие), которые часто могут быть полезны.