C23
From cppreference.net
<
c
ISO/IEC 9899:2024 , 일명 C23 , 은 C 표준의 현재 개정판입니다.
- C23의 최신 작업 초안 (n3149, 2023-07-09, 비밀번호로 보호된 zip 아카이브, 참조: n3150 ).
- C23과 가장 가까운 공개적으로 접근 가능한 초안은 첫 번째 C2Y 초안 (n3220, 2024-02-22, 편집상의 변경사항만 C23과 다름, 참조: n3221 ).
|
이 섹션은 불완전합니다
이유: 최종 초안에 포함된 승인된 변경 사항 |
C23은 사전 정의된 매크로 __STDC_VERSION__ 의 값을 202311L 로 변경합니다.
목차 |
새로운 언어 기능
- 십진 부동 소수점 타입 ( _Decimal32 , _Decimal64 , 및 _Decimal128 )
- 비트 정밀 정수 ( _BitInt )
- 이진 정수 상수
-
u8문자 상수 -
u8문자열 리터럴 의 타입 변경 -
숫자 구분자
' - 빈 초기화자 = { }
-
속성
-
[[ deprecated ]] -
[[ fallthrough ]] -
[[ maybe_unused ]] -
[[ nodiscard ]] -
[[ noreturn ]] -
[[ reproducible ]] -
[[ unsequenced ]]
-
- 함수 정의 에서의 이름 없는 매개변수
- 배열 타입 과 해당 요소 타입의 동일한 cvr 한정자
- 단일 인자 static_assert
- alignas 및 alignof 키워드화 (호환성 이유로 사전 정의 매크로일 수 있음)
- static_assert 키워드화 (호환성 이유로 사전 정의 매크로일 수 있음)
- thread_local 키워드화 (호환성 이유로 사전 정의 매크로일 수 있음)
-
레이블
뒤에 오는 선언 및
} - nullptr 상수 및 관련 nullptr_t 타입
- true 및 false 키워드화 (호환성 이유로 사전 정의 매크로일 수 있음)
- 새로운 전처리기 지시문
-
반올림 방향을 위한 프라그마
-
STDCFENV_ROUND -
STDCFENV_DEC_ROUND
-
선택적 기능을 위한 기능 테스트 매크로
-
__STDC_IEC_60559_BFP__
- IEEE-754 이진 부동 소수점 연산과 필수 수학 함수가 지원됨을 나타냅니다.
- 이 매크로는 __STDC_IEC_559__ 을 대체합니다.
-
__STDC_IEC_60559_DFP__
- IEEE-754 십진 부동 소수점 연산과 필수 수학 함수가 지원됨을 나타냅니다.
-
__STDC_IEC_60559_COMPLEX__
- IEEE-754 복소수 연산과 필수 수학 함수가 지원됨을 나타냅니다.
- 이 매크로는 __STDC_IEC_559_COMPLEX__ 을 대체합니다.
새로운 라이브러리 기능
새로운 헤더
라이브러리 기능
-
확장 이진 부동 소수점 수학 함수
-
이 섹션은 불완전합니다
이유: 목록 미정
-
-
십진 부동 소수점 수학 함수
-
-
d N기존 및 새로운 부동 소수점 수학 함수에 대한 변형 - quantized N ()
- samequantumd N ()
- quantumd N ()
- llquantexpd N ()
- encodedecd N ()
- decodedecd N ()
- encodebind N ()
- decodebind N ()
-
-
- 부동 소수점 서식 함수
-
UTF-8에 대한 라이브러리 지원
-
char8_t타입 별칭 - mbrtoc8()
- c8rtomb()
- atomic_char8_t 타입 별칭
- ATOMIC_CHAR8_T_LOCK_FREE 테스트 매크로
-
- memset_explicit()
- POSIX 함수
-
fscanf()
및
fprintf()
함수 패밀리에 대한 확장
-
w N및wf N길이 수정자 - 각각 [u]int N _t 및 [u]int_fast N _t 용 -
H,D, 및DD길이 수정자 - 각각 _Decimal32 , _Decimal64 , 및 _Decimal128 용 -
b부호 없는 정수 타입용 변환 지정자
-
- timespec_getres()
- 정수 타입 너비에 대한 매크로 상수
- 부동 소수점 타입에 대한 추가 숫자 제한 매크로
- 라이브러리 버전 테스트 매크로
폐기된 기능
제거된 기능
- 구식 스타일 함수 선언 및 함수 정의
- 2의 보수 이외의 부호 있는 정수 표현 방식
- u / U 접두사가 붙은 문자 상수 와 문자열 리터럴 이 UTF-16/32가 아닐 수 있음
- 혼합 너비 문자열 리터럴 연결
- 크기가 0인 상태로 realloc() 호출 지원 (동작이 정의되지 않음)
- alignas 와 alignof 이 <stdalign.h> 에 정의된 매크로로 제공됨 (키워드로 변경)
- static_assert 이 <assert.h> 에 정의된 매크로로 제공됨 (키워드로 변경)
- thread_local 이 <threads.h> 에 정의된 매크로로 제공됨 (키워드로 변경)
사용 중단된 기능
- <stdnoreturn.h>
- <stdalign.h>
- <stdbool.h>
- 구형 기능 테스트 매크로
- _Noreturn 함수 지정자
- _Noreturn 속성 토큰
- asctime()
- ctime()
- DECIMAL_DIG (대신 적절한 타입별 매크로 ( FLT_DECIMAL_DIG 등)를 사용하십시오)
- 다음 숫자 한계 매크로의 <math.h> 내 정의 (이들은 <float.h> 를 통해 사용해야 함)
- __bool_true_false_are_defined
결함 보고서
| C23에서 수정된 결함 보고서 (?개 결함) |
|---|
컴파일러 지원
C23 코어 언어 기능
|
이 섹션은 불완전합니다
이유: Apple Clang 및 C2x를 지원하는 다른 컴파일러의 상태 |
|
C23 기능
|
논문
|
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| static_assert 메시지 없는 static_assert | N2265 | 9 | 9 | Yes | Yes | 6.5 | 2021.1.2 (clang based) | ||||
[[
nodiscard
]]
|
N2267 | 10 | 9 | 지원 | 6.4 | 2021.1.2 (clang 기반) | |||||
[[
maybe_unused
]]
|
N2270 | 10 | 9 | 지원 | 6.4 | 2021.1.2 (clang 기반) | |||||
[[
deprecated
]]
|
N2334 | 10 | 9 | 지원 | 6.4 | 2021.1.2 (clang 기반) | |||||
| 속성 |
N2335
N2554 |
10 | 9 | 예 | 6.4 | 2021.1.2 (clang based) | |||||
| IEEE 754 십진 부동소수점 타입 | N2341 |
4.2
(부분적)*
12 |
13.0 (부분적)* | ||||||||
[[
fallthrough
]]
|
N2408 | 10 | 9 | 지원 | 6.4 | 2021.1.2 (clang 기반) | |||||
u8
문자 상수
|
N2418 | 10 | 15 | 6.5 | 2022.2 | ||||||
| 프로토타입 없는 함수 정의 제거 | N2432 | 10 | 15 | 2022.2 | |||||||
[[
nodiscard
]]
메시지와 함께
|
N2448 | 11 | 10 | 예 | 6.4 | 2021.1.2 (clang 기반) | |||||
| 함수 정의에서 이름 없는 매개변수 | N2480 | 11 | 11 | Yes | 6.4 | 2021.1.2 (clang based) | |||||
| Labels 선언 앞과 블록 끝에서의 레이블 | N2508 | 11 | 16 | 부분적* | 6.5 | 17.0 * | |||||
| 이진 정수 상수 | N2549 |
4.3
*
11 |
2.9
*
9 |
19.0 (2015)* * | 예 | 6.5 | 11.0 * | ||||
| __has_c_attribute 전처리기 조건문에서 | N2553 | 11 | 9 | 예 | 6.5 | 2021.1.2 (clang based) | |||||
| 중복 속성 허용 | N2557 | 11 | 13 | Yes | 6.5 | 2021.4 (clang-based | |||||
| IEEE 754 교환 및 확장 타입 | N2601 |
7
(부분적)*
14 |
6 (부분적)* | 부분적* | |||||||
| 숫자 구분자 | N2626 | 12 | 13 | 19.0 (2015)* * | 지원 | 6.5 | 18.0 * | ||||
#elifdef
및
#elifndef
|
N2645 | 12 | 13 | 19.40* | 13.1.6* | 6.5 | 2021.4 | ||||
u8
문자열 리터럴
의 타입 변경
|
N2653 | 13 | |||||||||
[[
maybe_unused
]]
레이블용
|
N2662 | 11 | 16 | 6.5 | 2022.2 | ||||||
| #warning | N2686 | 예 | 예 | 예 | 6.5 | 예 | |||||
| 비트 정밀 정수형 ( _BitInt ) | N2763 | 14 (부분적)* | 15 | 6.5 | 2022.2 | ||||||
[[
noreturn
]]
|
N2764 | 13 | 15 | 6.5 | 2022.2 | ||||||
| 비트 정밀도 정수 상수를 위한 접미사 | N2775 | 14 | 15 | 2022.2 | |||||||
| __has_include 전처리기 조건문에서 | N2799 | 5 | 예 | 19.11* | 예 | 6.5 | 18.0 | ||||
| 유니코드 표준 부속서 31을 사용한 식별자 구문 | N2836 | 13 | 15 | 6.5 | 2022.2 | ||||||
| 프로토타입 없는 함수 선언 제거 | N2841 | 13 | 15 | 2022.2 | |||||||
| 빈 초기화 | N2900 |
부분적*
13 |
부분적* | 부분적* | 부분적* | 부분적* | |||||
| typeof 및 typeof_unqual |
N2927
N2930 |
부분적*
13 |
부분적*
16 |
19.39* | 부분적* | 부분적* | 부분적* | 부분적* | |||
| 키워드의 새로운 철자법 | N2934 | 13 | 16 | 6.5 | |||||||
| 미리 정의된 true 및 false | N2935 | 13 | 15 | 2022.2 | |||||||
[[
unsequenced
]]
및
[[
reproducible
]]
|
N2956 | 15 | |||||||||
| 가변 인수 매개변수 목록에 대한 요구 사항 완화 variadic parameter list | N2975 | 13 | 16 | 6.5 | 2023.1 | ||||||
| 객체 정의에서의 타입 추론 | N3007 | 13 | 18 | ||||||||
| #embed | N3017 | 15 | 19 | ||||||||
| constexpr 객체 | N3018 | 13 | 19 | ||||||||
| 향상된 일반 열거형 | N3029 | 13 | 20 * | ||||||||
| 고정된 기본 타입을 가진 열거형 | N3030 | 13 | 20 * | ||||||||
__VA_OPT__
|
N3033 |
8
13 |
12 | 19.39* | 6.5 | ||||||
| 복합 리터럴을 위한 저장 클래스 지정자 | N3038 | 13 | |||||||||
| nullptr | N3042 | 13 | 16 | ||||||||
|
C23 기능 |
문서 |
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
C23 라이브러리 기능
|
이 섹션은 불완전합니다
이유: C 표준 라이브러리에 대한 별도의 목록 필요 |