1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
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`, `max_align_t`
- 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](https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3037.pdf)
- 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,...
|