Namespaces
Variants

History of C

From cppreference.net

목차

초기 C 언어

  • 1969: B 언어가 BCPL을 기반으로 만들어져 PDP-7 어셈블러를 대체하며 Unix의 시스템 프로그래밍 언어로 사용됨
  • 연산자 추가됨 ++ , -- , 복합 할당 연산자, BCPL과 같은 타입 없는 언어로 유지됨
  • 1971: B를 PDP-11로 포팅할 때 NB("new B") 생성됨
  • 타입 ( int , char , 배열과 포인터), 배열-포인터 변환, 머신 코드로의 컴파일
  • 1972: 언어 이름이 C로 변경됨
  • struct , 연산자 && || , 전처리기, 이식 가능한 I/O
  • 1973: Unix가 C 언어로 재작성됨
  • unsigned , long , union , 열거형, 향상된 타입 안전성
  • 1978: The C 프로그래밍 언어, 1판

표준 C

  • 1983년: ANSI에서 X3J11 위원회 설립
  • 1988년: The C Programming Language, 2판 발간
  • 1989년: C89 , ANSI C 표준 발표
  1. 기존 관행을 체계화함
  2. 새로운 기능: volatile , enum , signed , void , locales
  3. C++에서 차용: const , 함수 프로토타입
  • 1990년: C90 , ANSI C 표준이 ISO/IEC 9899:1990으로 채택됨
  • 1994년: 기술 정오표 1 (ISO/IEC 9899:1990/Cor.1:1994)
  1. 크게 확장된 와이드 및 멀티바이트 문자 지원 ( <wctype.h> , <wchar.h> , 스트림 I/O에 대한 추가 및 변경 등)
  2. 디그래프, <iso646.h> ,
  • 1996: 기술 정오표 2 (ISO/IEC 9899:1990/Cor.2:1996)
  • 1999: C99 (ISO/IEC 9899:1999)
  1. 새로운 기능: bool , long long , <stdint.h> , <inttypes.h> , restrict , 복합 리터럴, 가변 길이 배열, 유연한 배열 멤버, 지정 초기화자, <fenv.h> , 가변 인자 매크로, 복소수, __func__ , 16진수 부동 소수점 형식 ( % a ), lconv 내 통화 형식, isblank , 좁은 문자열 리터럴과 넓은 문자열 리터럴의 연결, 열거형의 후행 쉼표, 함수형 매크로의 빈 인수, STDC_ * 프라그마, va_copy , tmpnam 의 null 반환, setvbuf 의 null 포인터, hh ll 길이 지정자( printf , snprintf ), _Exit , <tgmath.h> , POSIX 스타일 strftime 지정자
  2. C++에서 도입: inline , 선언과 코드 혼용, for 루프 초기화 절 내 선언, // 주석, 소스 코드 내 유니버설 문자 이름
  3. 암시적 함수와 암시적 int 제거됨
  • 2001: 기술 정오표 1 (ISO/IEC 9899:1999/Cor.1:2001)
  • 2004: 기술 정오표 2 (ISO/IEC 9899:1999/Cor.2:2004)
  • 2004: 유니코드 기술 보고서 (ISO/IEC TR 19769:2004) ( ISO 스토어 ) ( N1040 2003년 11월 7일 초안)
  • 2007: 기술 정오표 3 (ISO/IEC 9899:1999/Cor.3:2007) ( N1256 2007년 9월 7일 초안)
  1. 스레드 인식 메모리 모델, <stdatomic.h> , <threads.h> , 타입 제네릭 함수, alignas / alignof , noreturn , static_assert , 분석 가능성 확장, 복소수 및 허수 타입 확장, 익명 구조체 및 공용체, 배타적 파일 열기 모드, quick_exit
  2. 제거됨 gets
  3. 경계 검사 인터페이스 TR에서: 경계 검사 인터페이스,
  4. 유니코드 TR에서: char16_t , char32_t , 및 <uchar.h>
  • 2012: 기술 정오표 1 (ISO/IEC 9899:2011/Cor 1:2012) ( ISO 스토어 )
  • 2013: Secure Coding Rules TS (ISO/IEC TS 17961:2013) ( ISO 스토어 ) ( N1718 2013년 5월 30일)
  • 2014: FP TS part 1: Binary floating-point arithmetic (ISO/IEC TS 18661-1:2014) ( ISO 스토어 ) ( N1778 2013년 초안)
  1. C11(주로 부록 F)에 IEC 60559:2011의 모든 기본 요구사항과 일부 권고사항을 포함하는 변경사항을 제공합니다(C11은 IEC 60559:1989를 기반으로 구축되었습니다)
  • 2015: FP TS part 2: Decimal floating-point arithmetic (ISO/IEC TS 18661-2:2015) ( ISO 스토어 ) ( N1912 2015 초안)
  1. C11에 IEC 60559:2011의 10진 부동 소수점 연산에 대한 모든 요구 사항과 몇 가지 기본 권장 사항을 지원하기 위한 변경 사항을 제공합니다. 이는 ISO/IEC TR 24732:2009를 대체합니다.
  • 2015: FP TS 파트 3: 교환 및 확장 타입 (ISO/IEC TS 18661-3:2015) ( ISO 스토어 ) ( N1945 2015 드래프트)
  1. IEC 60559:2011의 확장 부동 소수점 형식과 교환 형식(산술 및 비산술 모두)에 대한 권장 사항을 지원하기 위해 C11에 대한 변경 사항을 제공합니다.
  1. IEC 60559:2011에서 권장하는 모든 수학 연산(π 단위 삼각법, 역제곱근, 복리 계산 등)을 지원하기 위해 C11에 도입된 변경 사항을 제공합니다.
  1. IEC 60559:2011에서 권장하는 모든 보완 속성(평가 모델, 예외 처리, 재현성 등)을 지원하기 위해 C11에 대한 변경 사항을 제공합니다
주요 문서: C17
C17에서 수정된 결함 보고서 (54개 결함)
  • 2023 C23 (ISO/IEC 9899:2024). C23은 C 표준의 현재 개정판입니다.
주요 문서: C23
C23에서 수정된 결함 보고서 (?개 결함)

향후 개발

  • 병렬성 TS (초안 N2017 2016-03-10)
  • 트랜잭셔널 메모리 TS (초안 N1961 2015-09-23)
  • C (최신 초안 n3550 2025-05-04)
  1. DR 상태가 부여되지 않은 이슈 목록: ( N2556 2020-08-02)
주요 문서: C29 ?
다음 주요 C 언어 표준 개정판

참고 항목

C++ documentation for History of C++

외부 링크

1. C 언어의 발전 by Dennis M. Ritchie
2. C99 표준에 대한 근거 문서