c99와 c11의 차이
저는 현재 c를 배우고 있습니다.제가 읽은 책은 C99 기반의 책입니다.저는 이 책을 다 읽고 지식을 C11로 업데이트하거나, 큰 차이가 있다면 자원을 변경하고 싶습니다.따라서 제가 요청하는 것은 제 지식을 업데이트하기 위한 설명이나 자료입니다.이 정보원만 찾았어요그럼에도 불구하고 제가 필요로 하는 정보를 포괄하지 않거나 간결하지 않은 것 같습니다.
잘 부탁드립니다.추신: 저는 C11이 현재 보편적인 표준이라고 생각하기 때문에 그것을 배우고 싶습니다.만약 그렇지 않다면, 저에게 알려주세요.
C11 표준에 대한 좋은 개요:
- https://en.wikipedia.org/wiki/C11_(C_standard_revision)
- http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
- https://smartbear.com/blog/test-and-monitor/c11-a-new-c-standard-aiming-at-safer-programming/
이 표준에는 다음과 같은 C99 언어 및 라이브러리 사양에 대한 몇 가지 변경 사항이 포함되어 있습니다.
- 정렬사양사(양ification()
_Alignas
지자정,_Alignof
교입니다환.aligned_alloc
기능.<stdalign.h>
헤더 파일) - 그
_Noreturn
및 "는 다음과 같습니다."<stdnoreturn.h>
파일 파일 를한유일식을 한 유형
_Generic
를 들어,과 같은 매크로, 즉, 다음과 같은 매크로가 .cbrt(x)
에해는하로 됩니다.cbrtl(x)
,cbrt(x)
또는cbrtf(x)
의x
:#define cbrt(x) _Generic((x), long double: cbrtl, \ default: cbrt, \ float: cbrtf)(x)
지원Multi-threading Support)
_Thread_local
지자리정스래클지스,<threads.h>
생성기능, 및 스토리지 및 mutex, mutex, 조건별드지스리토기는및헤더을하관포능함스레및스드생변기레._Atomic
및 "형식"<stdatomic.h>
(무정전 객체 액세스용).- 기술 ISO TR C는 ISO/ TR 19769:2004)를 지원을 개선했습니다.
char16_t
그리고.char32_t
을 저장하기UTF-16/UTF-32
함를포데터이인된에 있는 변환 데이터<uchar.h>
u 및 U접두사 및는 "u" "u" "u" "u8" 입니다.UTF-8
부호화된 리터럴). - 제거
gets
이전 C2007됨, 대안인 ISO/IEC 9899:1999/Cor.3:2007(E)에 , C 언어 표준 개정판, ISO/IEC 9899:1999:1999/Cor.3:2007(E)에서 삭제됨,gets_s
. - 경계 검사 인터페이스(부록 K).
- 분석 가능성 특징(부록 L)
- 부동 소수점 유형의 특성을 쿼리하기 위한 추가 매크로. 비정규 부동 소수점 숫자 및 유형이 저장할 수 있는 소수점 숫자와 관련이 있습니다.
- 익명 구조 및 결합, 결합 및 구조가 중첩될 때 유용합니다(예:
struct T { int tag; union { float x; int n; }; };
. - 정적 어설션 - 다음 단계에서 변환 중에 평가됩니다.
#if
그리고.#error
번역자가 유형을 이해할 때. - 독점 생성 및 열기 모드(
"…x"
접미사)의 경우open
이 동작은 다음과 같습니다.O_CREAT|O_EXCL
에POSIX
일반적으로 잠금 파일에 사용됩니다. - 그
quick_exit
프로그램을 종료하는 세 번째 방법으로 기능하며, 종료 시 최소한의 초기화 해제를 수행합니다.exit
실패합니다. - 복잡한 값의 구성을 위한 매크로(부분적으로는 다음과 같습니다.)
real + imaginary*I
다음과 같은 경우 기대값을 산출하지 못할 수 있습니다.imaginary
무한 또는NaN
).
C 2011 표준 자체에 따라, 다음은 C99의 주요 변경 사항입니다.
서문
...
6 이 3판은 ISO/IEC 9899:1999/Cor 1:2001, ISO/IEC 9899:1999/Cor 2:2004 및 ISO/IEC 9899:1999/Cor 3:2007에 의해 수정된 2판 ISO/IEC 9899:1999를 취소하고 대체합니다.이전 버전에서 주요 변경 사항은 다음과 같습니다.
조건부(선택 사항) 기능(이전에 필수였던 일부 기능 포함)
향상된 메모리 시퀀싱 모델, 원자성 객체, 스레드 로컬 스토리지를 포함한 여러 스레드의 실행 지원(<stdatomic.h>
그리고<threads.h>
)
추가 부동 소수점 특성 매크로(<float.h>
)
개체 정렬 쿼리 및 지정(<stdalign.h>
,<stdlib.h>
)
유니코드 문자 및 문자열(<uchar.h>
) (원래 ISO/IEC TR 19769:2004에 명시되어 있음)
활자를 사용한 표현.
정적인 주장
익명의 구조와 조합
반환되지 않는 함수
복잡한 숫자를 만드는 매크로(<complex.h>
)
단독 액세스를 위한 파일 열기 지원
제거했습니다.gets
함수(<stdio.h>
)
추가했습니다.aligned_alloc
,at_quick_exit
그리고quick_exit
함수(<stdlib.h>
)
(조건부) 경계 검사 인터페이스 지원(원래 ISO/IEC TR 24731-1:2007에 명시됨)
분석 가능성에 대한 (조건부) 지원
언급URL : https://stackoverflow.com/questions/38405260/difference-between-c99-and-c11
'programing' 카테고리의 다른 글
Spring MVC 애플리케이션에서 서비스 계층에 사용하는 명명 규칙은 무엇입니까? (0) | 2023.08.28 |
---|---|
실행문 중 PDO가 영향을 받는 행이었습니다. (0) | 2023.08.28 |
Floatdoctor는 명령 프롬프트나 PowerShell 창에서 작동하지 않습니까? (0) | 2023.08.28 |
접두사와 와일드카드를 사용하여 데이터베이스에 액세스할 수 있습니까? (0) | 2023.08.28 |
Ajax를 사용하여 base64 이미지 업로드 (0) | 2023.08.28 |