#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.

#N2510: Allow unnamed parameters in a function definition

C23 allows you to omit the name of a parameter in the prototype of a function definition that does not use that parameter.

#N2549: Binary integer constants

C23 allows binary integer constants in addition to octal, decimal, and hexadecimal, using syntax like 0b01101011.

#N2900: Consistent, warningless, and intuitive initialization with {}

C23 allows empty initializers to initialize an object as if it had static storage duration.

About this wiki

commit 9ae9aa6dce652ab62c1c9ca34e8419e5dc510de1
Author: Josiah Frentsos <jfrent@tilde.team>
Date:   2022-11-29T13:24:30-05:00

README.md: Remove outdated note about gmake
Clone this wiki
https://git.sr.ht/~mcf/cproc (read-only)
git@git.sr.ht:~mcf/cproc (read/write)