C23 (C Standard Revision) - Wikipedia
C23 (C Standard Revision) - Wikipedia
C23 is the informal name for what will likely become ISO/IEC 9899:2024, the next standard for the C programming
language, which will replace C17 (standard ISO/IEC 9899:2018).[1] It was started in 2016 informally as C2x,[2] and
expected to be published in 2024.[3] The most recent publicly available working draft of C23 was released on April 1,
2023.[4] The first WG14 meeting for the C2x draft was held in October 2019,[5] virtual remote meetings were held in
2020 due to the COVID-19 pandemic, then various teleconference meetings continued to occur through 2023.
Features
Changes integrated into the latest working draft of C23 are listed below.[4]
Standard Library
New functions
▪ Add memset_explicit() function in <string.h> to erase sensitive data, where memory store
must always be performed regardless of optimizations.[6]
▪ Add memccpy() function in <string.h> to efficiently concatenate strings – similar to POSIX and
SVID C extensions.[7]
▪ Add strdup() and strndup() functions in <string.h> to allocate a copy of a string – similar to
POSIX and SVID C extensions.[8]
▪ Add memalignment() function in <stdlib.h> to determine the byte alignment of a pointer.[9]
▪ Add bit utility functions / macros / types in new header <stdbit.h> to examine many integer
types. All start with stdc_ to minimize conflict with legacy code and 3rd party libraries.[10]
▪ In the following, replace * with uc, us, ui, ul, ull for five function names, or blank for a type-
generic macro.[10]
▪ Add stdc_count_ones*() and stdc_count_zeros*() to count number of 1 or 0 bits in
value.[10]
▪ Add stdc_leading_ones*() and stdc_leading_zeros*() to count leading 1 or 0 bits in
value.[10]
▪ Add stdc_trailing_ones*() and stdc_trailing_zeros*() to count trailing 1 or 0 bits in
value.[10]
▪ Add stdc_first_leading_one*() and stdc_first_leading_zero*() to find first leading
bit with 1 or 0 in value.[10]
▪ Add stdc_first_trailing_one*() and stdc_first_trailing_zero*() to find first
trailing bit with 1 or 0 in value.[10]
▪ Add stdc_has_single_bit*() to determine if value an exact power of 2 (return true if and
only if there is a single 1 bit).[10]
▪ Add stdc_bit_floor*() to determine the largest integral power of 2 that is not greater than
value.[10]
▪ Add stdc_bit_ceil*() to determine the smallest integral power of 2 that is not less than
value.[10]
▪ Add stdc_bit_width*() to determine number of bits to represent a value.[10]
▪ Add timegm() function in <time.h> to convert time structure into calendar time value - similar to
function in glibc and musl libraries.[11]
Existing functions
▪ Add %b binary conversion specifier to printf() function family, prepending non-zero values with
0b, similar to how %x works. Implementations that previously did not use %B as their own extension
are encouraged to implement and prepend non-zero values with 0B, similar to how %X works.[12]
▪ Add %b binary conversion specifier to scanf() function family.[12]
▪ Add 0b and 0B binary conversion support to strtol() and wcstol() function families.[12]
▪ Make the functions bsearch(), bsearch_s(), memchr(), strchr(), strpbrk(), strrchr(),
strstr(), and their wide counterparts wmemchr(), wcschr(), wcspbrk(), wcsrchr(), wcsstr()
return a const qualified object if one was passed to them.[13]
Preprocessor
▪ Add #elifdef and #elifndef directives,[14] which are essentially equivalent to #elif defined
and #elif !defined. Both directives were added to C++23 standard and GCC 12.[15]
▪ Add #embed directive for binary resource inclusion and __has_embed allowing the availability of a
resource to be checked by preprocessor directives.[16]
▪ Add #warning directive for diagnostics.[17]
▪ Add __has_include allowing the availability of a header to be checked by preprocessor
directives.[18]
▪ Add __has_c_attribute allowing the availability of an attribute to be checked by preprocessor
directives.[19] (see "C++ compatibility" group for new attribute feature)
▪ Add __VA_OPT__ functional macro for variadic macros which expands to its argument only if a
variadic argument has been passed to the containing macro.[20]
Types
▪ Add nullptr_t, a null pointer type.[21]
▪ Add _BitInt(N) and unsigned _BitInt(N) types for bit-precise integers. Add
BITINT_MAXWIDTH macro for maximum bit width.[22][23]
▪ Add ckd_add(), ckd_sub(), ckd_mul() macros for checked integer operations.[24]
▪ Variably-modified types (but not VLAs which are automatic variables allocated on the stack) become
a mandatory feature.[25]
▪ Better support for using const with arrays.[26]
▪ Standardization of the typeof(...) operator.[27]
▪ The meaning of the auto keyword was changed to cause type inference while also retaining its old
meaning of a storage class specifier if used alongside a type. Unlike C++, C23 allows type inference
only for object definitions (no inferring function return type or function parameter type).[28]
▪ Compatibility rules for structure, union, and enumerated types were changed to allow a
redeclaration of a compatible type with the same tag.[29]
Constants
▪ Add nullptr constant for nullptr_t type.[21]
▪ Add wb and uwb integer literal suffixes for _BitInt(N) and unsigned _BitInt(N) types,[30] such
as 6uwb yields an unsigned _BitInt(3), and -6wb yields a signed _BitInt(4) which has three
value bits and one sign bit.
▪ Add 0b and 0B binary literal constant prefixes,[31] such as 0b10101010 (equating to 0xAA).
▪ Add ' digit separator to literal constants,[32] such as 0xFE'DC'BA'98 (equating to 0xFEDCBA98),
299'792'458 (equating to 299792458), 1.414'213'562 (equating to 1.414213562).
▪ Add the ability to specify the underlying type of an enum.[33]
▪ Allow enums with no fixed underlying type to store values that are not representable by int.[34]
Keywords
▪ Add true and false keywords.[35]
▪ Add alignas, alignof, bool, static_assert, thread_local keywords. Previously defined
keywords become alternative spellings: _Alignas, _Alignof, _Bool, _Static_assert,
_Thread_local.[36]
▪ Add _BitInt keyword (see "types" group)
▪ Add typeof and typeof_unqual keywords (see "types" group)
▪ Add nullptr keyword (see "constants" group)
▪ Add constexpr keyword (see "other" group)
▪ Add _Decimal32, _Decimal64, _Decimal128 keywords for (optional) decimal floating-point
arithmetic (see "other" group)
Syntax
▪ Labels can appear before declarations and at the end of compound statements.[37]
▪ Unnamed parameters in function definitions.[38]
▪ Zero initialization with {} (including initialization of VLAs).[39]
▪ Variadic functions no longer need a named argument before the ellipsis and the va_start macro
no longer needs a second argument nor does it evaluate any argument after the first one if
present.[40]
▪ Add C++11 style attribute syntax[41] using double square brackets [[]].
▪ Add single-argument _Static_assert for compatibility with C++17.[42]
▪ Functions with no arguments listed in the prototype void foo() are understood as taking no
arguments (see removal of K&R function declarations)
C++ compatibility
▪ Various syntax changes improve compatibility with C++, such as labels before declarations,
unnamed function arguments, zero initialization with {}, variadic functions without named
argument, C++11 style attributes, _Static_assert (see Syntax). For labels at the end of
compound statements a corresponding change was made to C++23.[43]
▪ Add C++-style attributes (see Syntax). Add attributes [44] [[deprecated]],[45]
[[fallthrough]],[46] [[maybe_unused]],[47] [[nodiscard]],[48] and [[noreturn]] attribute
for compatibility with C++11, then deprecate _Noreturn, noreturn, header <stdnoreturn.h>
features introduced in C11.[49] Duplicate attributes are allowed for compatibility with C++23.[50] All
standard attributes can also be surrounded by double underscores (e.g [[__deprecated__]] is
equivalent to [[deprecated]]).
▪ Add u8 prefix for character literals to represent UTF-8 encoding for compatibility with C++17.[51][52]
▪ Add #elifdef and #elifndef preprocessing directives for compatibility with C++23.[14] (see
"preprocessor" group)
Other features
▪ Support for the ISO/IEC 60559:2020, the current version of the IEEE 754 standard for floating-point
arithmetic, with extended binary floating-point arithmetic and (optional) decimal floating-point
arithmetic.[53][54]
▪ The constexpr specifier for objects but not functions, unlike C++'s equivalent.[55]
▪ Add char8_t type for storing UTF-8 encoded data and change the type of u8 character constants
and string literals to char8_t. Also, the functions mbrtoc8() and c8rtomb() to convert a narrow
multibyte character to UTF-8 encoding and a single code point from UTF-8 to a narrow multibyte
character representation respectively.[56]
▪ Clarify that all char16_t strings and literals shall be UTF-16 encoded, and all char32_t strings and
literals shall be UTF-32 encoded, unless otherwise explicitly specified.[57]
▪ Allow storage class specifiers to appear in compound literal definition.[58]
Obsolete features
Some old obsolete features are either removed or deprecated from the working draft of C23:
▪ Remove Trigraphs.[59]
▪ Remove K&R function definitions/declarations (with no information about the function
arguments).[60][61]
▪ Remove representations for signed integers other than two's complement. Two's complement
signed integer representation will be required.[62]
▪ The *_HAS_SUBNORM macros in <float.h> are obsolescent features.[63]
Compiler support
The GCC 9,[64] Clang 9.0,[65] and Pelles C 11.00[66] compilers implement an experimental compiler flag to support this
standard.
See also
▪ C++23, C++20, C++17, C++14, C++11, C++03, C++98, versions of the C++ Computer
programming language standard programming portal
References
1. "History of C" (https://en.cppreference.com/w/c/language/history). cppreference.com. 2022-06-27.
Archived (https://web.archive.org/web/20221019191546/https://en.cppreference.com/w/c/languag
e/history) from the original on October 19, 2022.
2. "WG14-N2086 : C2x Charter" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2086.htm).
open-std.org. 2016-09-20. Archived (https://web.archive.org/web/20221222213708/https://www.ope
n-std.org/jtc1/sc22/wg14/www/docs/n2086.htm) from the original on December 22, 2022.
3. "WG14-N3132 : Revised C23 Schedule" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n313
2.pdf) (PDF). open-std.org. 2023-06-04. Archived (https://web.archive.org/web/20230609204739/http
s://www.open-std.org/jtc1/sc22/wg14/www/docs/n3132.pdf) (PDF) from the original on June 9,
2023.
4. "WG14-N3096 : Draft for ISO/IEC 9899:2023" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/
n3096.pdf) (PDF). open-std.org. April 1, 2023. Archived (https://web.archive.org/web/2023040217245
9/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf) (PDF) from the original on April
2, 2023.
5. "WG14-N2437 : Agenda for October 2019" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2
437.htm). open-std.org. 2019-10-21. Archived (https://web.archive.org/web/20210305073426/https://
www.open-std.org/jtc1/sc22/wg14/www/docs/n2437.htm) from the original on March 5, 2021.
6. "WG14-N2897 : memset_explicit()" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2897.ht
m). open-std.org. 2021-12-27. Archived (https://web.archive.org/web/20221025074215/https://open-
std.org/jtc1/sc22/wg14/www/docs/n2897.htm) from the original on October 25, 2022.
7. "WG14-N2349 : Toward more efficient string copying and concatenation" (https://www.open-std.org
/jtc1/sc22/wg14/www/docs/n2349.htm). open-std.org. 2019-03-18. Archived (https://web.archive.org
/web/20220930092258/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2349.htm) from the
original on September 30, 2022.
8. "WG14-N2353 : strdup() and strndup()" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n235
3.htm). open-std.org. 2019-03-18. Archived (https://web.archive.org/web/20221224063709/https://w
ww.open-std.org/jtc1/sc22/wg14/www/docs/n2353.htm) from the original on December 24, 2022.
9. "WG14-N2974 : Queryable pointer alignment" (https://www.open-std.org/jtc1/sc22/wg14/www/docs
/n2974.pdf) (PDF). open-std.org. 2022-04-15. Archived (https://web.archive.org/web/2022101318224
0/https://www.open-std.org/jtc1/sc22/WG14/www/docs/n2974.pdf) (PDF) from the original on
October 13, 2022.
10. "WG14-N3022 : Modern Bit Utilities" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3022.ht
m). open-std.org. 2022-07-06. Archived (https://web.archive.org/web/20221224194734/https://www.
open-std.org/jtc1/sc22/wg14/www/docs/n3022.htm) from the original on December 24, 2022.
11. "WG14-N2833 : Add timegm() as non-optional part of time.h" (https://www.open-std.org/jtc1/sc22/w
g14/www/docs/n2833.htm). open-std.org. 2021-10-07. Archived (https://web.archive.org/web/20211
201062452/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2833.htm) from the original on
December 1, 2021.
12. "WG14-N2630 : formatted input/output of binary integer numbers" (https://www.open-std.org/jtc1/
sc22/wg14/www/docs/n2630.pdf) (PDF). open-std.org. 2021-01-01. Archived (https://web.archive.org
/web/20221214154315/https://open-std.org/JTC1/SC22/WG14/www/docs/n2630.pdf) (PDF) from the
original on December 14, 2022.
13. "WG14-N3020 : Qualifier-preserving standard library functions" (https://www.open-std.org/jtc1/sc22
/wg14/www/docs/n3020.pdf) (PDF). open-std.org. 2022-06-13. Archived (https://web.archive.org/web
/20221013190826/https://www.open-std.org/jtc1/sc22/WG14/www/docs/n3020.pdf) (PDF) from the
original on October 13, 2022.
14. "WG14-N2645 : Add support for preprocessing directives #elifdef and #elifndef" (https://www.open-
std.org/jtc1/sc22/wg14/www/docs/n2645.pdf) (PDF). open-std.org. 2020-01-25. Archived (https://we
b.archive.org/web/20221128133337/https://open-std.org/JTC1/SC22/WG14/www/docs/n2645.pdf)
(PDF) from the original on November 28, 2022.
15. "GCC 12 Adds Support For New #elifdef #elifndef Directives" (https://www.phoronix.com/news/GCC-
12-elifdef-elifndef). phoronix. May 12, 2021. Archived (https://web.archive.org/web/20221227050002
/https://www.phoronix.com/news/GCC-12-elifdef-elifndef) from the original on December 27, 2022.
16. "WG14-N3017 : #embed - a scannable, tooling-friendly binary resource inclusion mechanism" (http
s://www.open-std.org/jtc1/sc22/wg14/www/docs/n3017.htm). open-std.org. 2022-06-27. Archived (ht
tps://web.archive.org/web/20221224045304/https://www.open-std.org/jtc1/sc22/wg14/www/docs/
n3017.htm) from the original on December 24, 2022.
17. "WG14-N2686 : #warning" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2686.pdf) (PDF).
open-std.org. 2022-07-22. Archived (https://web.archive.org/web/20221128133337/https://open-std.
org/JTC1/SC22/WG14/www/docs/n2686.pdf) (PDF) from the original on November 28, 2022.
18. "WG14-N2799 : __has_include for C" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2799.p
df) (PDF). open-std.org. 2021-08-30. Archived (https://web.archive.org/web/20221224103617/https://
open-std.org/JTC1/SC22/WG14/www/docs/n2799.pdf) (PDF) from the original on December 24,
2022.
19. "WG14-N2553 : Querying attribute support" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/
n2553.pdf) (PDF). open-std.org. 2020-08-04. Archived (https://web.archive.org/web/20221014221314
/https://open-std.org/JTC1/SC22/WG14/www/docs/n2553.pdf) (PDF) from the original on October
14, 2022.
20. "WG14-N3033 : Comma omission and comma deletion" (https://www.open-std.org/jtc1/sc22/wg14/
www/docs/n3033.htm). open-std.org. 2022-07-20. Archived (https://web.archive.org/web/202212270
31727/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3033.htm) from the original on
December 27, 2022.
21. "WR14-N3042 : Introduce the nullptr constant" (https://open-std.org/JTC1/SC22/WG14/www/docs/n
3042.htm). open-std.org. 2022-07-22. Archived (https://web.archive.org/web/20221224043228/http
s://open-std.org/JTC1/SC22/WG14/www/docs/n3042.htm) from the original on December 24, 2022.
22. "WG14-N2763 : Adding a Fundamental Type for N-bit integers" (https://www.open-std.org/jtc1/sc22
/wg14/www/docs/n2763.pdf) (PDF). open-std.org. 2021-06-21. Archived (https://web.archive.org/web
/20221227055250/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2763.pdf) (PDF) from the
original on December 27, 2022.
23. "WG14-N3035 : _BitInt Fixes" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3035.pdf)
(PDF). open-std.org. 2022-07-21. Archived (https://web.archive.org/web/20221013182206/https://ww
w.open-std.org/jtc1/sc22/WG14/www/docs/n3035.pdf) (PDF) from the original on October 13, 2022.
24. "WG14-N2867 : Checked N-Bit Integers" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n286
7.pdf) (PDF). open-std.org. 2021-11-28. Archived (https://web.archive.org/web/20221214154907/http
s://open-std.org/JTC1/SC22/WG14/www/docs/n2867.pdf) (PDF) from the original on December 14,
2022.
25. "WG14-N2778 : Variably-Modified Types" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n27
78.pdf) (PDF). open-std.org. 2021-07-11. Archived (https://web.archive.org/web/20221222053411/htt
ps://open-std.org/jtc1/sc22/wg14/www/docs/n2778.pdf) (PDF) from the original on December 22,
2022.
26. "WG14-N2607 : Compatibility of Pointers to Arrays with Qualifiers" (https://www.open-std.org/jtc1/s
c22/wg14/www/docs/n2607.pdf) (PDF). open-std.org. 2020-10-31. Archived (https://web.archive.org/
web/20221013182946/https://www.open-std.org/jtc1/sc22/WG14/www/docs/n2607.pdf) (PDF) from
the original on October 13, 2022.
27. "WG14-N2899 : Not-so-magic - typeof for C" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n
2899.htm). open-std.org. 2022-01-21. Archived (https://web.archive.org/web/20221224044528/http
s://www.open-std.org/jtc1/sc22/wg14/www/docs/n2899.htm) from the original on December 24,
2022.
28. "WG14-N3007 : Type inference for object definitions" (https://www.open-std.org/jtc1/sc22/wg14/ww
w/docs/n3007.htm). open-std.org. 2022-06-10. Archived (https://web.archive.org/web/202212241056
54/https://open-std.org/JTC1/SC22/WG14/www/docs/n3007.htm) from the original on December 24,
2022.
29. "WG14-N3037 : Improved Rules for Tag Compatibility (updates N3032)" (https://www.open-std.org/jt
c1/sc22/wg14/www/docs/n3037.pdf) (PDF).
30. "WG14-N2775 : Literal suffixes for bit-precise integers" (https://www.open-std.org/jtc1/sc22/wg14/w
ww/docs/n2775.pdf) (PDF). open-std.org. 2021-07-13. Archived (https://web.archive.org/web/202212
27014728/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2775.pdf) (PDF) from the original
on December 27, 2022.
31. "WG14-N2549 : Allow for binary integer constants" (https://www.open-std.org/jtc1/sc22/wg14/www
/docs/n2549.pdf) (PDF). open-std.org. 2020-07-30. Archived (https://web.archive.org/web/202212221
92818/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2549.pdf) (PDF) from the original on
December 22, 2022.
32. "WG14-N2626 : Digit separators" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2626.pdf)
(PDF). open-std.org. 2020-12-15. Archived (https://web.archive.org/web/20221219215425/https://op
en-std.org/JTC1/SC22/WG14/www/docs/n2626.pdf) (PDF) from the original on December 19, 2022.
33. "WG14-N3030 : Enhancements to Enumerations" (https://open-std.org/JTC1/SC22/WG14/www/docs/
n3030.htm). open-std.org. 2022-07-19. Archived (https://web.archive.org/web/20221126132709/http
s://open-std.org/JTC1/SC22/WG14/www/docs/n3030.htm) from the original on November 26, 2022.
34. "WG14-N3029 : Improved Normal Enumerations" (https://open-std.org/JTC1/SC22/WG14/www/docs
/n3029.htm). open-std.org. 2022-07-19. Archived (https://web.archive.org/web/20230129180341/htt
ps://open-std.org/JTC1/SC22/WG14/www/docs/n3029.htm) from the original on January 29, 2023.
35. "WG14-N2935 : Make false and true first-class language features" (https://www.open-std.org/jtc1/sc
22/wg14/www/docs/n2935.pdf) (PDF). open-std.org. 2022-02-15. Archived (https://web.archive.org/w
eb/20221121123457/https://open-std.org/JTC1/SC22/WG14/www/docs/n2935.pdf) (PDF) from the
original on November 21, 2022.
36. "WG14-N2934 : Revise spelling of keywords" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/
n2934.pdf) (PDF). open-std.org. 2022-02-15. Archived (https://web.archive.org/web/20221224132455
/https://open-std.org/JTC1/SC22/WG14/www/docs/n2934.pdf) (PDF) from the original on December
24, 2022.
37. "WG14-N2508 : Free Positioning of Labels Inside Compound Statements" (https://www.open-std.org
/jtc1/sc22/wg14/www/docs/n2508.pdf) (PDF). open-std.org. 2020-03-28. Archived (https://web.archiv
e.org/web/20221227183107/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2508.pdf) (PDF)
from the original on December 27, 2022.
38. "WG14-N2510 : Allowing unnamed parameters in a function definition" (https://www.open-std.org/j
tc1/sc22/wg14/www/docs/n2510.pdf) (PDF). open-std.org. 2020-04-09. Archived (https://web.archive.
org/web/20221224075948/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2510.pdf) (PDF)
from the original on December 24, 2022.
39. "WG14-N2900 : Consistent, Warningless, and Intuitive Initialization with {}" (https://www.open-std.o
rg/jtc1/sc22/wg14/www/docs/n2900.htm). open-std.org. 2022-01-01. Archived (https://web.archive.o
rg/web/20221227181452/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2900.htm) from
the original on December 27, 2022.
40. "WG14-N2975 : Relax requirements for variadic parameter lists" (https://www.open-std.org/jtc1/sc2
2/wg14/www/docs/n2975.pdf) (PDF). open-std.org. 2022-04-15. Archived (https://web.archive.org/we
b/20221128133337/https://open-std.org/JTC1/SC22/WG14/www/docs/n2975.pdf) (PDF) from the
original on November 28, 2022.
41. "WG14-N2335 : Attributes in C" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2335.pdf)
(PDF). open-std.org. 2019-03-09. Archived (https://web.archive.org/web/20221026060722/https://ww
w.open-std.org/jtc1/sc22/wg14/www/docs/n2335.pdf) (PDF) from the original on October 26, 2022.
42. "WG14-N2265 : Harmonizing static_assert with C++" (https://open-std.org/JTC1/SC22/WG14/www/d
ocs/n2265.pdf) (PDF). open-std.org. 2018-07-06. Archived (https://web.archive.org/web/20230328064
918/https://open-std.org/JTC1/SC22/WG14/www/docs/n2265.pdf) (PDF) from the original on March
28, 2023.
43. "Labels at the end of compound statements (C compatibility)" (https://www.open-std.org/jtc1/sc22/
wg21/docs/papers/2022/p2324r2.pdf) (PDF). 2022-01-13.
44. "WG14-N2554 : Minor attribute wording cleanups" (https://www.open-std.org/jtc1/sc22/wg14/www/
docs/n2554.pdf) (PDF). open-std.org. 2020-08-04. Archived (https://web.archive.org/web/202211281
33337/https://open-std.org/JTC1/SC22/WG14/www/docs/n2554.pdf) (PDF) from the original on
November 28, 2022.
45. "WG14-N2334 : The deprecated attribute" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2
334.pdf) (PDF). open-std.org. 2019-01-22. Archived (https://web.archive.org/web/20221019131835/ht
tps://open-std.org/JTC1/SC22/WG14/www/docs/n2334.pdf) (PDF) from the original on October 19,
2022.
46. "WG14-N2408 : The fallthrough attribute" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2
408.pdf) (PDF). open-std.org. 2019-08-11. Archived (https://web.archive.org/web/20221225070709/ht
tps://www.open-std.org/jtc1/sc22/wg14/www/docs/n2408.pdf) (PDF) from the original on
December 25, 2022.
47. "WG14-N2270 : The maybe_unused attribute" (https://www.open-std.org/jtc1/sc22/wg14/www/docs
/n2270.pdf) (PDF). open-std.org. 2018-07-06. Archived (https://web.archive.org/web/2022122507083
6/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2270.pdf) (PDF) from the original on
December 25, 2022.
48. "WG14-N2267 : The nodiscard attribute" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n22
67.pdf) (PDF). open-std.org. 2018-07-06. Archived (https://web.archive.org/web/20221019131846/htt
ps://www.open-std.org/jtc1/sc22/wg14/www/docs/n2267.pdf) (PDF) from the original on October
19, 2022.
49. "WG14-N2764 : The noreturn attribute" (https://open-std.org/JTC1/SC22/WG14/www/docs/n2764.pd
f) (PDF). open-std.org. 2021-06-21. Archived (https://web.archive.org/web/20221225063437/https://o
pen-std.org/JTC1/SC22/WG14/www/docs/n2764.pdf) (PDF) from the original on December 25, 2022.
50. "WG14-N2557 : Allow Duplicate Attributes" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n
2557.pdf) (PDF). open-std.org. 2020-09-01. Archived (https://web.archive.org/web/20221128133337/
https://open-std.org/JTC1/SC22/WG14/www/docs/n2557.pdf) (PDF) from the original on November
28, 2022.
51. "WG14-N2418 : Adding the u8 character prefix" (https://www.open-std.org/jtc1/sc22/wg14/www/do
cs/n2418.pdf) (PDF). open-std.org. 2019-09-02. Archived (https://web.archive.org/web/202301132100
23/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2418.pdf) (PDF) from the original on
January 13, 2023.
52. What is the point of the UTF-8 character literals proposed for C++17?; Stack Overflow. (https://stacko
verflow.com/questions/31970111/what-is-the-point-of-the-utf-8-character-literals-proposed-for-c17
#31970297)
53. "WG14-N2341 : ISO/IEC TS 18661-2 - Floating-point extensions for C - Part 2: Decimal floating-point
arithmetic" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2341.pdf) (PDF). open-std.org.
February 26, 2019. Archived (https://web.archive.org/web/20221121122559/https://open-std.org/JT
C1/SC22/WG14/www/docs/n2341.pdf) (PDF) from the original on November 21, 2022.
54. "WG14-N2601 : Annex X - IEC 60559 interchange and extended types" (https://www.open-std.org/jtc
1/sc22/wg14/www/docs/n2601.pdf) (PDF). open-std.org. October 15, 2020. Archived (https://web.arc
hive.org/web/20221014221322/https://open-std.org/JTC1/SC22/WG14/www/docs/n2601.pdf) (PDF)
from the original on October 14, 2022.
55. "WG14-N3018 : The constexpr specifier for object definitions" (https://www.open-std.org/jtc1/sc22/
wg14/www/docs/n3018.htm). open-std.org. 2022-07-06. Archived (https://web.archive.org/web/2022
1224074302/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3018.htm) from the original on
December 24, 2022.
56. "WG14-N2653 : char8_t: A type for UTF-8 characters and strings (Revision 1)" (https://www.open-std.
org/jtc1/sc22/wg14/www/docs/n2653.htm). open-std.org. 2021-06-04. Archived (https://web.archive.
org/web/20230527110842/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2653.htm) from
the original on May 27, 2023.
57. "WG14-N2728 : char16_t & char32_t string literals shall be UTF-16 & UTF-32" (https://www.open-std.
org/jtc1/sc22/wg14/www/docs/n2728.htm). open-std.org. 2021-05-15. Archived (https://web.archive.
org/web/20230527110756/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2728.htm) from
the original on May 27, 2023.
58. "WG14-N3038 : Introduce storage-class specifiers for compound literals" (https://open-std.org/JTC1/
SC22/WG14/www/docs/n3038.htm). open-std.org. 2022-07-21. Archived (https://web.archive.org/we
b/20221126130057/https://open-std.org/JTC1/SC22/WG14/www/docs/n3038.htm) from the original
on November 26, 2022.
59. "WG14-N2940 : Removing trigraphs??!" (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n294
0.pdf) (PDF). open-std.org. 2022-03-02. Archived (https://web.archive.org/web/20221026005747/http
s://www.open-std.org/jtc1/sc22/wg14/www/docs/n2940.pdf) (PDF) from the original on October 26,
2022.
60. "WG14-N2432 : Remove support for function definitions with identifier lists proposal" (https://www.
open-std.org/jtc1/sc22/wg14/www/docs/n2432.pdf) (PDF). open-std.org. September 25, 2019.
Archived (https://web.archive.org/web/20221227012244/https://www.open-std.org/jtc1/sc22/wg14/
www/docs/n2432.pdf) (PDF) from the original on December 27, 2022.
61. "WG14-N2841 : No function declarators without prototypes" (https://www.open-std.org/jtc1/sc22/w
g14/www/docs/n2841.htm). open-std.org. 2021-10-10. Archived (https://web.archive.org/web/20221
112154740/https://www9.open-std.org/jtc1/sc22/wg14/www/docs/n2841.htm) from the original on
November 12, 2022.
62. "WG14-N2412 : Two's complement sign representation" (https://www.open-std.org/jtc1/sc22/wg14/
www/docs/n2412.pdf) (PDF). open-std.org. August 11, 2019. Archived (https://web.archive.org/web/2
0221227174224/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2412.pdf) (PDF) from the
original on December 27, 2022.
63. "WG14-N2993 : Make *_HAS_SUBNORM be obsolescent" (https://www.open-std.org/jtc1/sc22/wg14/
www/docs/n2993.htm). open-std.org. 2022-06-06. Archived (https://web.archive.org/web/202212051
94635/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2993.htm) from the original on
December 5, 2022.
64. "GCC 9 Release Notes" (https://gcc.gnu.org/gcc-9/changes.html#c). GNU Project. Archived (https://w
eb.archive.org/web/20221227032646/https://gcc.gnu.org/gcc-9/changes.html) from the original on
December 27, 2022.
65. "Clang 9.0 - add new language mode for C2x" (https://github.com/llvm/llvm-project/commit/d06f39
17913d2558b771ccc48d838f8cd8993c01). LLVM Project Repository. May 14, 2019. Archived (https://w
eb.archive.org/web/20221227032640/https://github.com/llvm/llvm-project/commit/d06f3917913d2
558b771ccc48d838f8cd8993c01) from the original on December 27, 2022.
66. "Pelles C - major changes between 10.00 and 11.00" (http://www.smorgasbordet.com/pellesc/chang
es_1000_1100.htm). smorgasbordet.com. Archived (https://web.archive.org/web/20221227032644/ht
tp://www.smorgasbordet.com/pellesc/changes_1000_1100.htm) from the original on December 27,
2022.
External links
▪ C Language Working Group WG14 Documents (https://www.open-std.org/jtc1/sc22/wg14/www/wg
14_document_log.htm)