A list of missing standard C features:
ANSI/C89
- K&R style function definitions with type declarations:
h(a, b) int a; double b; { ... }
C99
- Variable-length arrays (VLAs)
- 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)
C11
_Alignas- Multithreading support (
_Thread_local, atomics) u8".."string literals
C23
- Decimal floating-point types (
_Decimal32,_Decimal64, and_Decimal128) - Bit-precise integers (
_BitInt) nullptr,nullptr_t- Binary integer constants
char8_t- Digit separator '
- 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,...