AndyC wrote:
VC++ is NOT a C compiler.
I'm afraid I have to object to that.
If I run cl.exe from the command prompt, this is the first line of output:
"Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86"
C/C++ compiler, see.

The fact that it can compile in C mode (default for .c files or use /Tc or /TC) and that it will reject C++ constructs in that mode is further proof.
It is however true that VC++ is
primarily a C++ compiler. Afaik there have been no language support improvements to the C front-end in a long time. It definitely doesn't support any C99 features.
And if standards compliance is your main argument for choosing a compiler you should use
Comeau. It is the
only compiler in the world that implements 100% of the ISO C99 and C++03 standards. For example, it is the only compiler in the world that supports export templates (and this will likely remain the case; the EDG group (which implemented Comeau's C++ front-end) took an insanely long time to implement this feature (longer then it took them to implement all of Java), and discovered that its specification in the standard introduces language ambiguities, drastically complicates argument dependent lookup, and has almost none of the advantages the feature was meant for. It is likely export templates will be removed from a future version of the C++ standard).
EDIT: To my best knowledge, VC++ misses only two features from the ISO C++ standard: the aforementioned export templates and exception specifications (the latter it can parse but it won't use them). In both cases it was a deliberate decision on the part of the VC++ team not to implement those features: export templates for the aforementioned reason, and exception specifications because the way they are done in C++ is fundamentally flawed and the VC++ compiler folks felt their efforts were better spent elsewhere.
G++ does support exception specifications which (if it doesn't miss any other features, which I don't think it does but I might be wrong) so if you say it is more standards compliant this is true. However since the difference lies in at most that one feature I don't think this is a valid argument anymore for choosing one compiler over the other. That was true in the VC6 days, but not anymore (though it is worth nothing that VC6 is older than the C++ standard, so that it is not so compliant is perhaps to be expected). If you primarily do C development I agree that VC would perhaps not be the best choice.