aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/c23.md36
1 files changed, 36 insertions, 0 deletions
diff --git a/doc/c23.md b/doc/c23.md
new file mode 100644
index 0000000..d91a40f
--- /dev/null
+++ b/doc/c23.md
@@ -0,0 +1,36 @@
+# C23 status
+
+cproc implements some C23 features applied to the latest drafts.
+
+## [N2265]: `_Static_assert` without message
+
+C11 required that static assertions always contained a message. C23
+now allows `_Static_assert` with just an expression.
+
+## [N2418]: UTF-8 character constants
+
+C23 introduces UTF-8 character constants using the syntax `u8'a'`.
+Compared to an unprefixed character constant, they have type `unsigned
+char` instead of `int`, and are guaranteed to use UTF-8 encoding
+rather than the execution character set. Since the character in a
+UTF-8 character constant must have a single-byte UTF-8 encoding,
+this type of character constant could be useful when you need the
+ASCII value of a character, but do not want to depend on any
+particular execution character set.
+
+## [N2508]: Free positioning of labels inside compound statements
+
+In previous revisions of C, labels like `foo:`, `case 123:`, or
+`default:` could only precede statements. This was relaxed in C23,
+and they can now appear intermixed with declarations in compound
+statements.
+
+## [N2549]: Binary integer constants
+
+C23 allows binary integer constants in addition to octal, decimal,
+and hexadecimal, using syntax like `0b01101011`.
+
+[N2265]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2265.pdf
+[N2418]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2418.pdf
+[N2508]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2508.pdf
+[N2549]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2549.pdf