Thanks for the review. AFAIK, HAVE_VISIBILITY is specific to autotools and it is not defined by the compiler itself. But _WIN32 is defined in the compiler targeting Win32 platform. Using that _WIN32 logic will not be dependent on compiler and build toolchain. Also, clang in mingw does not define _MSC_VER. gcc documentation also suggests to use _WIN32[1].
[1]: https://gcc.gnu.org/wiki/Visibility
