std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n') error when using #include <Windows.h>

c++, cin, max

Solution

The `<windows.h>` header has had the `min()` and `max()` macros since time immemorial, and they frequently cause problems with C++. Fortunately, you can disable them by adding `#define NOMINMAX` before including `<windows.h>`.

Problem

In Visual Studio 2010 Pro, I get a compile error stating "expected an identifier" on the `max()` portion of the command. It seems that in the `windows.h` header file there is a `max(a,b)` identifier and the compiler wants to use that. I tried to use `#include <limits>` as well, but that did not fix the problem. Is there anyway to get around this?

Original source

Related problems