B. C compilers

 

As of this writing (June 2025), gcc and clang in their latest versions implement most of the new language features of C23, but unfortunately, some notable features are still missing: for Clang 18, the constexpr storage class specifier, and for Clang 18 and GCC 14, [[unsequenced]] and [[reproducible]] attributes.

Using less recent compilers also works for large parts, but the less recent, the more problems you will have, particularly if you need to use 128-bit types (see the following discussion). It seems that starting from GCC 10 and Clang 14, the C23 support is reasonable.

The code used in this book should compile when using the fallback header as indicated. In any case, it is always better to use the latest compiler release supported by your platform. Not only will it better implement the C standard as we need it for C23 support, it will also better optimize and take advantage of modern hardware.

B.1 Attributes

B.2 Missing #embed

B.3 Missing constexpr

B.4 Missing 128-bit integer support