 
                            When compiling with a specific vendor's implementation of the C language, and related libraries, be aware that, unfortunately, standards conformance can differ from vendor to vendor. Be certain to read your vendor's documentation to reduce the likelihood of accidentally relying on implementation-specific behavior or deviations.
...
Implementation-specific deviations are listed below. The Version column lists the latest version of the compiler or library that exhibits the behavior.
...
| API | Description | Version | 
|---|---|---|
| Variable-length arrays | Absent | 2012 | 
| staticand type qualifiers inparameter array declarators | Absent | 2012 | 
| _Static_assert | Absent; can use static_assert, as in C++11 | 2012 | 
| _Noreturn | Absent; can use __declspec(noreturn) | 2012 | 
| inline | Absent; can use __inline | 2012 | 
| Hexadecimal floating-point constants | Absent | 2012 | 
| Compound literals | Absent | 2012 | 
| Designated initializers | Absent | 2012 | 
| Implicit function declarations | Support was removed in C11, but it is still supported in MSVC (with diagnostic) | 2012 | 
| Mixed declarations and code | Absent | 2012 | 
| _Pragma | Absent; can use __pragma | 2012 | 
| _Bool | Absent | 2012 | 
| _Complex | Absent | 2012 | 
| __func__ | Absent; can use __FUNCTION__ | 2012 | 
| idempotent type qualifiers | Diagnosed, but functional | 2012 | 
| _Thread_local | Absent; can use __declspec(thread) | |
| <complex.h> | Absent; __STDC_NO_COMPLEX__is not defined | 2012 | 
| isblank() | Absent | 2012 | 
| <fenv.h> | Absent | 2012 | 
| <inttypes.h> | Absent | 2012 | 
| 
 | Absent | 2012 | 
| #pragma FP_CONTRACT | Spelled fp_contractinstead ofFP_CONTRACT | 2012 | 
| fpclassify() | Absent, use _fpclass()instead | 2012 | 
| isfinite(),isinf() | Absent, use _finite()or_finitef()instead | 2012 | 
| isnan() | Absent, use _isnan()or_isnanf()instead | 2012 | 
| isnormal() | Absent, use _fpclass()instead | 2012 | 
| signbit() | Absent | 2012 | 
| acosh(),asinh(),atanh() | Absent | 2012 | 
| exp2(),expm1(),ilogb(),log1p(),log2() | Absent | 2012 | 
| scalbn() | Absent; use _scalb()(or_scalbf()on x64 targets only) instead | 2012 | 
| cbrt() | Absent | 2012 | 
| erf(),erfc(),lgamma(),tgamma() | Absent | 2012 | 
| nearbyint(),rint(),lrint(),round(),lround(),trunk() | Absent | 2012 | 
| remainder(),remquo() | Absent | 2012 | 
| copysign() | Absent; use _copysign()instead | 2012 | 
| nan(),nexttoward() | Absent | 2012 | 
| nextafter() | Absent; use _nextafter()or_nextafterf()instead | 2012 | 
| fdim(),fmax(),fmin() | Absent | 2012 | 
| fma() | Absent | 2012 | 
| isgreater(),isgreaterequal(),isless(),islessequal(),isunordered() | Absent | 2012 | 
| <stdalign.h> | Absent | |
| va_copy() | Absent | 2012 | 
| <stdatomic.h> | Absent; __STDC_NO_ATOMICS__is not defined | 2012 | 
| <stdbool.h> | Absent; _Boolis not supported in/TCmode, butboolis supported in/TPmode | 2012 | 
| max_align_t | Absent | 2012 | 
| Printing format specifier type field | Sis MSVC-specific;c,s, andzare not conforming [ISO/IEC 9899-2011];Fis unsupported | 2012 | 
| Printing format specifier size field | I,I32andI64are MSVC-specific;h,wandlare not conforming [ISO/IEC 9899-2011];hh,j,zandtunsupported | 2012 | 
| Scanning format specifier type field | Sis MSVC-specific;candsare not conforming [ISO/IEC 9899-2011];pis unsupported | 2012 | 
| Scanning format specifier size field | I64is MSVC-specific;h,l, andLprefixes are not conforming [ISO/IEC 9899-2011];hh,j,z, andtare unsupported | 2012 | 
| snprintf() | Absent; beware that _snprintf()'s semantics are sufficiently different that it is not advisable as a replacement | 2012 | 
| vfscanf(),vscanf(),vsscanf() | Absent | 2012 | 
| fopen(),freopen() | Mode parameter not conforming [ISO/IEC 9899-2011]; t,c,n,N,S,R,T,Dandcssare MSVCextensions; xis unsupported; see remarks | 2012 | 
| atoll() | Absent; use _atoi64()instead | 2012 | 
| strtof(),strtold() | Absent | 2012 | 
| strtoll() | Absent; use _strtoi64()instead | 2012 | 
| strtoull() | Absent; use _strtoui64()instead | 2012 | 
| aligned_alloc() | Absent; use _aligned_malloc()instead (beware, the parameter order is reversed) | 2012 | 
| at_quick_exit(),quick_exit() | Absent | 2012 | 
| _Exit() | Absent; use _exit()instead | 2012 | 
| <stdnoreturn.h> | Absent; use __declspec(noreturn)instead | 2012 | 
| <tgmath.h> | Absent | 2012 | 
| <threads.h> | Absent; __STDC_NO_THREADS__is not defined | 2012 | 
| TIME_UTC,struct timespec,timespec_get() | Absent | 2012 | 
| strftime(), wcsftime() | zis not conforming [ISO/IEC 9899-2011];C,D,e,F,g,G,h,n,r,R,t,T,u,Vunsupported | 2012 | 
| <uchar.h> | Absent | 2012 | 
| vfwscanf(),vswscanf(),vwscanf() | Absent | 2012 | 
| fwide() | Unsupported | 2012 | 
| wcstof(),wcstold() | Absent | 2012 | 
| wcstoll() | Absent; use _wcstoi64()instead | 2012 | 
| wcstoull() | Absent; use _wcstoui64()instead | 2012 | 
| iswblank() | Absent | 2012 | 
| FLT_EVAL_METHOD,*_HAS_SUBNORM,*_DECIMAL_DIG,*_TRUE_MIN | Absent | 2012 | 
| __STDC_LIB_EXT1__, | Not defined; instead, MSVC uses __STDC_SECURE_LIB__and__STDC_WANT_SECURE_LIB__ | 2012 | 
| fopen_s(), freopen_s() | Uses the same mode strings as fopen();uprefix is unsupported; see remarks | 2012 | 
| vfscanf_s(),vscanf_s(),vsscanf_s() | Absent | 2012 | 
| constraint_handler_t,set_constraint_handler_s(), | Absent; use _invalid_parameter_handlerand_set_invalid_parameter_handler()instead.  Beware that the_invalid_parameter_handlersignature is considerably different thanthat of constraint_handler_t.  No replacement forabort_handler_s()orignore_handler_s() | 2012 | 
| bsearch_s() | Not conforming [ISO/IEC 9899-2011]; beware that the comparison function pointer's signature is different from the standard; namely that the context parameter comes first in MSVC but last in ISO C. | 2012 | 
| qsort_s() | Not conforming [ISO/IEC 9899-2011]; beware that the comparison function's pointer signature is different from the standard; namely that the context parameter comes first in MSVC but last in ISO C. | 2012 | 
| strtok_s() | Not conforming [ISO/IEC 9899-2011]; the function signature is missing the rsize_t *parameter. | 2012 | 
| memset_s(), strerrorlen_s() | Absent | 2012 | 
| gmtime_s(), localtime_s() | Not conforming [ISO/IEC 9899-2011]; the function signature has the parameters reversed and returns errno_tinstead ofstruct tm *. | 2012 | 
| snwprintf_s() | Absent; use _snwprintf_s()instead.  Note that the parameters differ from the ISO C signature. | 2012 | 
| vfwscanf_s(),vswscanf_s(),vwscanf_s() | Absent | 2012 | 
| 
 | Absent, use _vsnwprintf_s()instead.  Note that the parameters differ from the ISO C signature. | 2012 | 
| wcstok_s() | Not conforming [ISO/IEC 9899-2011]; the function signature is missing the rsize_t *parameter. | 2012 | 
fopen() & freopen()
The C standard does not specify what happens with Windows newline characters (CRLF), and so care should be taken when working with text files. For instance:
...
If you save the contents of text_file.txt with Windows line endings (CRLF) and run the program on Windows, it will print 30. However, if you compile the application on a platform which does not use CRLF as its line endings, it will print 32. This is because MSVC's text translation mode will translate the CRLF characters into a single LF character on input, and translate a single LF character to CRLF on output. To ensure consistent behavior between platforms, consider opening the file in binary translation mode explicitly.
...