A list of missing standard C features:
C89
- trigraphs (deliberately left out)
C99
- Proper
long doublesupport in platforms with extended floats (currently equivalent todouble) <tgmath.h>header- digraphs
- Universal character names (
\uXXXX,\UXXXXXXXX) - IEEE 754 float support Annex F IEC 60559 (
FLT_EVAL_METHOD,FENV_ACCESSpragma) (not even GCC or Clang care about this)
Stack-allocated VLAs are a stub and actually compile to a fixed size array at the moment (but noone should use them anyway)
C11
- atomics
C23
- Decimal floating-point types (
_Decimal32,_Decimal64, and_Decimal128) - Bit-precise integers (
_BitInt) char8_t- Attributes (
[[...]]syntax) - Labels followed by declarations and }
autofor type inference,typeof_unqual,constexprunreachablemacro in<stddef.h>- checked int arithmetic (
<stdckdint.h>) - tagged type compatibility N3037
- storage class specifier for compound literals
- preprocessor
#embeddirective,__has_include,__has_c_attribute - Pragmas for float rounding direction (
STDC FENV_ROUND,STDC FENV_DEC_ROUND) - IEEE 754 decimal floats, interchange and extended types. various
<float.h>macros,...