aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc/cstd.md
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2026-02-21 12:35:55 +0100
committerlemon <lsof@mailbox.org>2026-02-21 12:35:55 +0100
commit8aa0c6a5526a69b7f1b992990db59b275dfc2d80 (patch)
treefbe2e86eefa82ffc681445e991998f9b12a521f7 /doc/cstd.md
parent8dfd823f9f8b4d9bc43af473ab2758b3f1cc2012 (diff)
project documentation
Diffstat (limited to 'doc/cstd.md')
-rw-r--r--doc/cstd.md36
1 files changed, 36 insertions, 0 deletions
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, `<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 }
+ - `true` and `false` keywords
+ - `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,...