This is the old MySQL bug https://bugs.mysql.com/bug.php?id=20338
Half of places are __WIN__, half of places are _WIN32. We could bring some order into the sources
__WIN__ is not really needed, all Windows compilers define WIN32 (yes, also the 64 ones), also ___WIN__ violates the standard, as noted in the MySQL bug :
It violates the rule of section 7.1.3 of ISO/IEC 9899:1999 (E):
All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.
If the program declares or defines an identifier in a context in which it is reserved (other than as allowed by 7.1.4), or defines a reserved identifier as a macro name, the behavior is undefined.