Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added some language features from the Foreword that are missing in MSVC 11

...

Microsoft Visual Studio

APIDescriptionVersion 
Variable-length arraysAbsent 2012 
static and type qualifiers in
parameter array declarators
Absent 2012 
_Static_assertAbsent; can use static_assert, as in C++112012
_NoreturnAbsent; can use __declspec(noreturn)2012
inlineAbsent; can use __inline 2012 
Hexadecimal floating-point constantsAbsent 2012 
Compound literalsAbsent 2012 
Designated initializersAbsent 2012 
Implicit function declarationsSupport was removed in C11, but it is still supported in MSVC (with diagnostic) 2012 
Mixed declarations and codeAbsent 2012 
_Pragma
Absent; can use __pragma2012 
_BoolAbsent2012 
_ComplexAbsent 2012 
__func__Absent; can use __FUNCTION__ 2012
<complex.h>Absent; __STDC_NO_COMPLEX__ is not defined2012 
isblank()Absent2012 
<fenv.h>Absent2012 
<inttypes.h>Absent2012 

float_t, double_t, HUGE_VALF,
HUGE_VALL, INFINITY, NAN

Absent 2012 
#pragma FP_CONTRACTSpelled fp_contract instead of FP_CONTRACT2012 
fpclassify()Absent, use _fpclass() instead2012 
isfinite(), isinf()Absent, use _finite() or _finitef()instead2012 
isnan()Absent, use _isnan() or _isnanf() instead2012
isnormal()Absent, use _fpclass() instead 2012
signbit()Absent 2012 
acosh(), asinh(), atanh()Absent2012 
exp2(), expm1(), ilogb(), log1p(),
log2()
Absent2012 
scalbn()Absent; use _scalb() (or _scalbf() on x64 targets only) instead 2012 
cbrt()Absent 2012 
erf(), erfc(), lgamma(), tgamma()Absent2012
nearbyint(), rint(), lrint(),
round(), lround(), trunk()
Absent 2012
remainder(), remquo()Absent2012 
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 defined2012 
<stdbool.h>Absent; _Bool is not supported in /TC mode, but bool is supported in /TP mode2012 
max_align_tAbsent 2012 
Printing format specifier type fieldS is MSVC-specific; c, s, and z are not conforming [ISO/IEC 9899-2011]; F is unsupported2012
Printing format specifier size fieldII32 and I64 are MSVC-specific; hw and l are not conforming [ISO/IEC 9899-2011]; hh, jz
and t unsupported
2012
Scanning format specifier type fieldS is MSVC-specific; c and s are not conforming [ISO/IEC 9899-2011]; p is unsupported2012 
Scanning format specifier size fieldI64 is MSVC-specific; h, l, and L prefixes are not conforming [ISO/IEC 9899-2011]; hh, j, z, and
t are unsupported
2012 
snprintf()Absent; beware that _snprintf()'s semantics are sufficiently different that it is not advisable as a replacement2012
vfscanf(), vscanf(), vsscanf()Absent 2012 
fopen(), freopen()Mode parameter not conforming [ISO/IEC 9899-2011]; t, c, n, N, S, R, TD and css are MSVC
extensions; x is 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() instead2012
<stdnoreturn.h>Absent; use __declspec(noreturn) instead 2012 
<tgmath.h>Absent 2012 
<threads.h>Absent; __STDC_NO_THREADS__ is not defined2012 
TIME_UTC, struct timespec,
timespec_get()
Absent2012 
strftime(), wcsftime()z is not conforming [ISO/IEC 9899-2011]; C, D, e, F, gG, h, n, r, R, tT, uV unsupported2012
<uchar.h>Absent 2012 
vfwscanf(), vswscanf(), vwscanf()Absent2012 
fwide()Unsupported 2012 
wcstof(), wcstold()Absent 2012 
wcstoll()Absent; use _wcstoi64() instead 2012 
wcstoull()Absent; use _wcstoui64() instead2012 
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()u prefix is unsupported; see remarks2012 
vfscanf_s(), vscanf_s(),
vsscanf_s()
Absent 2012 
constraint_handler_t,
set_constraint_handler_s(),
abort_handler_s(),
ignore_handler_s()
Absent; use _invalid_parameter_handler and _set_invalid_parameter_handler()
instead.  Beware that the _invalid_parameter_handler signature is considerably different than
that of constraint_handler_t.  No replacement for abort_handler_s() or
ignore_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_t instead of struct 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()
Absent2012

vsnwprintf_s()

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 

...