At this point, if _MSC_VER
is defined, assume only C89 support. None of Microsoft's compilers officially support beyond the C89 standard. Back in 1989, when the ANSI C standard was first released, there was no reason to check and see what version of it was supported—there was only one version. The designation C89 is itself a neologism.
If Bo's comment is right about VS 2015 approaching C99 support (I'm not sure, I haven't installed VS 2015, and you don't seem to care about that version in the question, either), you could test _MSC_VER
for 1900 to detect that version.
That's what you would have to do even if the compiler supported a predefined macro like __STDC_VERSION__
because they're not going to (at least, they're not supposed to) increment the version number until they have full support for the applicable standard. In other words, adding a few of C99's features wouldn't be enough to increment __STDC_VERSION__
.