That, I think, is the most common complaint
about modern versions of MS tools; it's not that they won't
compile most any standard code, it's that the included bells
and whistles tend to generate highly non-portable,
Windows-specific code.
I'm generating my own source code the old fashion way: by
writing it
VC++ doesn't generate anything unless you want.
It has some bad habits like it doesn't require to #include
standard (CRT) headers to use their functions which I find
pretty odd and it's suggesting to use _s (secure) versions
of sprintf, strcpy, etc. So I guess it's more the programmers
decision how portable code he wants to write. Also I don't
like the way compiled executables require .NET even
if you write plain C++, but you can fix that with
DevC++ which produces M$ free executables.