programing

c99와 c11의 차이

css3 2023. 8. 28. 21:19

c99와 c11의 차이

저는 현재 c를 배우고 있습니다.제가 읽은 책은 C99 기반의 책입니다.저는 이 책을 다 읽고 지식을 C11로 업데이트하거나, 큰 차이가 있다면 자원을 변경하고 싶습니다.따라서 제가 요청하는 것은 제 지식을 업데이트하기 위한 설명이나 자료입니다.이 정보원만 찾았어요그럼에도 불구하고 제가 필요로 하는 정보를 포괄하지 않거나 간결하지 않은 것 같습니다.

잘 부탁드립니다.추신: 저는 C11이 현재 보편적인 표준이라고 생각하기 때문에 그것을 배우고 싶습니다.만약 그렇지 않다면, 저에게 알려주세요.

C11 표준에 대한 좋은 개요:

이 표준에는 다음과 같은 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_EXCLPOSIX일반적으로 잠금 파일에 사용됩니다.
  • 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