diff options
| author | 2026-02-21 12:35:55 +0100 | |
|---|---|---|
| committer | 2026-02-21 12:35:55 +0100 | |
| commit | 8aa0c6a5526a69b7f1b992990db59b275dfc2d80 (patch) | |
| tree | fbe2e86eefa82ffc681445e991998f9b12a521f7 /doc | |
| parent | 8dfd823f9f8b4d9bc43af473ab2758b3f1cc2012 (diff) | |
project documentation
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/cstd.md | 36 |
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,... |