The situation in C++ is saner, since both GCC and Clang are moving the standard forward, and together make sure that the standard can accept multiple valid implementations and code tends to be truly portable.
The problem is really simply that Microsoft was never interested, at least until very recently, to have a truly standards compliant compiler.