C17이란 무엇이며 언어가 어떻게 변경 되었습니까?
내가 GCC 8에 대한 소식을 확인했다, 나는 보았다 그들은 (정말,하지 C ++ 17 C17)을 C 언어의 2017 버전에 대한 지원을 추가 한. 그러나 인터넷에서 그것에 대한 정보를 찾을 수 없습니다.
C11과 같은 새로운 ISO 버전입니까, 아니면 GCC 팀이 컴파일러의 일부 수정을 위해 사용하는 코드 명입니까?
GCC 참조 에 따르면 C17
실제로는 DR 해상도가 통합 된 표준 의 버그 수정 버전 입니다 C11
.
C17 , 통합 DR 해상도와 C11 표준의 버그 수정 버전은 곧 투표로 이동합니다. 이 패치는 해당 옵션
-std=c17
,-std=gnu17
(새 기본 버전, 기본값으로 대체-std=gnu11
)을 추가-std=iso9899:2017
합니다. 표준의 버그 수정 버전으로서flag_isoc17
호환성 경고에 대한 필요 또는 옵션 이 없습니다 . 그러나, 거기에 새로운__STDC_VERSION__
가치, 그래서 새로운 cpplib 언어CLK_GNUC17
와CLK_STDC17
새로운 옵션이 새 값을 사용하여 지원하기 위해 추가됩니다. (표준이 2018 년에 게시되고로 알려진C18
경우 옵션 별칭을 추가 할 수 있습니다. 그러나 이는 게시 날짜가 아닌 값에-std=iso9899:199409
해당__STDC_VERSION__
합니다.)(GCC에서 구현해야하는 몇 가지 DR 해결 방법이 있지만 이는 새로운 옵션과는 별개입니다.)
따라서 C17에는 새로운 기능이 포함되어 있지 않습니다.
Cppreference (C의 역사)는 말한다 :
향후 개발
C17 다음 사소한 C 언어 표준 개정판에는 승인 된 모든 C11 결함 보고서가 포함되지만 새로운 기능은 없습니다 .
최신 정보:
- 2018 : C17 (ISO / IEC 9899 : 2018) ( ISO 스토어) ( 최종 초안 )
ATOMIC_VAR_INIT
다음 결함 보고서 의 지원 중단 및 수정 사항이 포함됩니다 .[DR 400] , [DR 401] , [DR 402] , [DR 403] , [DR 404] , [DR 405] , [DR 406] , [DR 407] , [DR 410] , [DR 412] , [DR 414] , [DR 415] , [DR 416] , [DR 417] , [DR 419] , [DR 423] , [DR 426] , [DR 428] , [DR 429] , [DR 430] , [DR 431] , [DR 433] , [DR 434] , [DR 436], [DR 437] , [DR 438] , [DR 439] , [DR 441] , [DR 444] , [DR 445] , [DR 447] , [DR 448] , [DR 450] , [DR 452] , [DR 453] , [DR 457] , [DR 458] , [DR 459] , [DR 460] , [DR 462] , [DR 464] , [DR 465] , [DR 468] , [DR 470] , [DR 471] , [DR 472] , [DR 473] ,[DR 475] , [DR 477] , [DR 480] , [DR 481] , [DR 485] , [DR 487] , [DR 491]
C17
" M.S Chaudhari
"가 발견 한 방법은 C 표준의 "버그 수정 릴리스"입니다 . 그러나 책 Jens Gustedt
의 저자가 준비한 매우 유용한 정보가 "Modern C"
있습니다.
그는 C17
과 비교 하여 다음과 같은 변경 사항 목록을 확인 했습니다 C11
.
원자 : 초기화 (7.17.2, 7.31.8) , 일관성 요구 사항 (5.1.2.4), 펜스 (7.17.3 p11), 함수 또는 매크로 (7.17.1 p6), 잠금 해제는 유형에 따라 다름 (7.17.5 p3), 비교 교환은 값이 아닌 메모리를 비교합니다 (7.17.7.3) , atomic_flag (7.17.18) .
스레드 : 스퓨리어스 오류 (7.26.3.5 p2, 7.26.3.6 p2, 7.26.4.5 p3) , 동기화 (7.26.4 p1), 스레드 특정 저장소 (
tss_t
) 및 스레드 종료 (7.26.5 p3, 7.26.5.5, 7.26.6 )정렬 : 기본 정렬 (6.2.8),
_Alignas
(6.7.5),aligned_alloc
(7.22.3.1)시퀀스 포인트 : 전체 표현식 (6.8 p4), 전체 선언자 (6.7..6 p3)
무한 루프 (6.8.5 p6)
예약 된 식별자 (7.1.3)
도메인 또는 범위 에러 (7.12.1),
ilogb
,erfc
,lgamma
.의 underspecification
clock
(7.27.2.1)
realloc
크기 0 (7.22.3.5) 에 대한 과소 사양부록 F :
FLT_ROUNDS
(F.2 p1)부록 K :
tmpnam_s
,snprintf_s
,sprintf_s
,vsprintf_s
,get_s
,mbstowcs_s
,wcstombs_s
,snwprintf_s
,swprintf_s
,vsnwprintf_s
,vswprint_s
,mbsrtowcs_s
,wcsrtombs_s
.
메인 페이지로 연결 C17 .
또한이 콘텐츠는 Jens
여기에서 업데이트 할 수 있습니다 . Jeans Gustedt Blog .
P.S: before posting all this stuff I received approval from the author.
'program story' 카테고리의 다른 글
"라틴"에서 지원하는 언어와 Google 웹 글꼴의 글꼴에서 "라틴 확장"글리프? (0) | 2020.12.09 |
---|---|
ggplot2에서 facet_wrap ()과 facet_grid ()의 차이점은 무엇입니까? (0) | 2020.12.09 |
JSON 배열을 Python 목록으로 변환 (0) | 2020.12.08 |
Eclipse에서 모든 중단 점을 보는 방법은 무엇입니까? (0) | 2020.12.08 |
이것이 정의되지 않은 동작 인 이유는 무엇입니까? (0) | 2020.12.08 |