[libcxx] r194891 - Fix-it suggestion for fixing min or max defines on Windows.
Arthur O'Dwyer
arthur.j.odwyer at gmail.com
Fri Nov 15 16:20:20 PST 2013
On Fri, Nov 15, 2013 at 3:41 PM, Yaron Keren <yaron.keren at gmail.com> wrote:
>
> -_LIBCPP_WARNING("macro min is incompatible with C++. #undefing min")
> +_LIBCPP_WARNING("macro min is incompatible with C++. Try #define NOMINMAX "
> + "before any Windows header. #undefing min")
Incidentally, this warning has annoyed me in the past when compiling
MySQL 5.5 as C++. They have some code (in the name of portability, I'm
sure) equivalent to
#ifndef max
#define min(a,b) (a < b ? a : b)
#define max(a,b) (a > b ? a : b)
#endif
which I try to disable by putting
#define max max
in another header. By #undef'ing max, libc++ interferes with this
tactic — or rather, it's hard to tell for any given translation unit
whether it interferes with it or not (depending on the order of
#includes), which is even more distracting. I wonder whether it would
be possible for the libc++ header to use
#undef max
#define max max
instead of just "#undef max", or if the Standard prohibits that somehow.
Not that I expect a change to happen, but I figured I should publicly
register my particular use-case.
–Arthur
More information about the cfe-commits
mailing list