fix msvc & clang macro