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 표준 발표
- 기존 관행을 체계화함
- 새로운 기능: volatile , enum , signed , void , locales
- C++에서 차용: const , 함수 프로토타입
- 1990년: C90 , ANSI C 표준이 ISO/IEC 9899:1990으로 채택됨
- 1994년: 기술 정오표 1 (ISO/IEC 9899:1990/Cor.1:1994)
- 1995년: C95 (ISO/IEC 9899:1990/Amd.1:1995) ( 온라인 스토어 )
- 크게 확장된 와이드 및 멀티바이트 문자 지원 ( <wctype.h> , <wchar.h> , 스트림 I/O에 대한 추가 및 변경 등)
- 디그래프, <iso646.h> ,
- 1996: 기술 정오표 2 (ISO/IEC 9899:1990/Cor.2:1996)
- 1999: C99 (ISO/IEC 9899:1999)
-
새로운 기능:
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 지정자 - C++에서 도입: inline , 선언과 코드 혼용, for 루프 초기화 절 내 선언, // 주석, 소스 코드 내 유니버설 문자 이름
- 암시적 함수와 암시적 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일 초안)
-
- 사용 중단됨 gets
- 2007: 경계 검사 인터페이스 TR (ISO/IEC TR 24731-1:2007) ( ISO 스토어 ) ( N1225 2007년 3월 28일 초안)
- 2008: 임베디드 TR (ISO/IEC TR 18037:2008) ( ISO 스토어 ) ( N1021 2003년 9월 24일 초안)
- 2009: 10진 부동소수점 TR (ISO/IEC TR 24732:2009) ( ISO 스토어 ) ( N1241 2007년 7월 5일 초안)
- 2009: 수학적 특수 함수 TR (ISO/IEC TR 24747:2009) ( ISO 스토어 ) ( N1182 2006년 8월 2일 초안)
- 2010: 동적 할당 함수 TR (ISO/IEC TR 24731-2:2010) ( ISO 스토어 ) ( N1388 2009년 6월 1일 초안)
- 2011: C11 (ISO/IEC 9899:2011) ( ISO 스토어 ) ( ANSI 스토어 ) ( N1570 2011년 4월 12일 초안)
- 스레드 인식 메모리 모델, <stdatomic.h> , <threads.h> , 타입 제네릭 함수, alignas / alignof , noreturn , static_assert , 분석 가능성 확장, 복소수 및 허수 타입 확장, 익명 구조체 및 공용체, 배타적 파일 열기 모드, quick_exit
- 제거됨 gets
- 경계 검사 인터페이스 TR에서: 경계 검사 인터페이스,
- 유니코드 TR에서: char16_t , char32_t , 및 <uchar.h>
- 2012: 기술 정오표 1 (ISO/IEC 9899:2011/Cor 1:2012) ( ISO 스토어 )
-
- 수정 DR 411
- 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년 초안)
- 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 초안)
- C11에 IEC 60559:2011의 10진 부동 소수점 연산에 대한 모든 요구 사항과 몇 가지 기본 권장 사항을 지원하기 위한 변경 사항을 제공합니다. 이는 ISO/IEC TR 24732:2009를 대체합니다.
- IEC 60559:2011의 확장 부동 소수점 형식과 교환 형식(산술 및 비산술 모두)에 대한 권장 사항을 지원하기 위해 C11에 대한 변경 사항을 제공합니다.
- IEC 60559:2011에서 권장하는 모든 수학 연산(π 단위 삼각법, 역제곱근, 복리 계산 등)을 지원하기 위해 C11에 도입된 변경 사항을 제공합니다.
- IEC 60559:2011에서 권장하는 모든 보완 속성(평가 모델, 예외 처리, 재현성 등)을 지원하기 위해 C11에 대한 변경 사항을 제공합니다
- 2023 C23 (ISO/IEC 9899:2024). C23은 C 표준의 현재 개정판입니다.
| C23에서 수정된 결함 보고서 (?개 결함) |
|---|
향후 개발
- DR 상태가 부여되지 않은 이슈 목록: ( N2556 2020-08-02)
- 주요 문서: C29 ?
- 다음 주요 C 언어 표준 개정판
참고 항목
|
C++ documentation
for
History of C++
|
외부 링크
| 1. | C 언어의 발전 by Dennis M. Ritchie |
| 2. | C99 표준에 대한 근거 문서 |