0% found this document useful (0 votes)
1K views9 pages

C23 (C Standard Revision) - Wikipedia

C23 is the next revision of the C programming language standard after C17. It includes new standard library functions, bit manipulation functions, preprocessor directives, numeric literal formats, and other features. Changes are aimed at improving compatibility with C++. Some old and obsolete features like trigraphs and K&R function syntax are removed. C23 is targeted to be published in 2024.

Uploaded by

geqefoqebu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views9 pages

C23 (C Standard Revision) - Wikipedia

C23 is the next revision of the C programming language standard after C17. It includes new standard library functions, bit manipulation functions, preprocessor directives, numeric literal formats, and other features. Changes are aimed at improving compatibility with C++. Some old and obsolete features like trigraphs and K&R function syntax are removed. C23 is targeted to be published in 2024.

Uploaded by

geqefoqebu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

C23 (C standard revision)

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

▪ Compatibility of C and C++

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)

▪ N3096 - working draft of C23 standard (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3


096.pdf) - dated April 1, 2023

Retrieved from "https://en.wikipedia.org/w/index.php?title=C23_(C_standard_revision)&oldid=1191228940"

You might also like