From 8aa0c6a5526a69b7f1b992990db59b275dfc2d80 Mon Sep 17 00:00:00 2001 From: lemon Date: Sat, 21 Feb 2026 12:35:55 +0100 Subject: project documentation --- doc/cstd.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 doc/cstd.md (limited to 'doc') diff --git a/doc/cstd.md b/doc/cstd.md new file mode 100644 index 0000000..63e39cd --- /dev/null +++ b/doc/cstd.md @@ -0,0 +1,36 @@ +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`) + - `complex` types, `` 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 } + - `true` and `false` keywords + - `auto` for type inference, `typeof_unqual`, `constexpr` + - `unreachable` macro in `` + - checked int arithmetic (``) + - 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 `` macros,... -- cgit v1.2.3