aboutsummaryrefslogtreecommitdiffhomepage

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 double support in platforms with extended floats (currently equivalent to double)
  • <tgmath.h> header
  • digraphs
  • Universal character names (\uXXXX, \UXXXXXXXX)
  • IEEE 754 float support Annex F IEC 60559 (FLT_EVAL_METHOD, FENV_ACCESS pragma) (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 }
  • auto for type inference, typeof_unqual, constexpr
  • unreachable macro in <stddef.h>
  • checked int arithmetic (<stdckdint.h>)
  • tagged type compatibility N3037
  • storage class specifier for compound literals
  • preprocessor #embed directive, __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,...