ANSI C , ISO C , 표준 C (Standard C)는 미국 국립 표준 협회 (ANSI)와 국제 표준화 기구 (ISO)가 출판한 C 프로그래밍 언어 의 이후 표준들을 가리킨다. 역사적으로 이 이름들은 오리지널의 가장 잘 지원되는 버전의 표준(C89 또는 C90)을 가리켰다. C로 개발하는 소프트웨어 개발자들은 표준을 따르는 것을 권고받으며 그렇게 함으로써 컴파일러 간 이식 에 도움을 줄 수 있다.
C를 위한 최초 표준은 ANSI에 의해 출판되었다. 이 문서가 최종적으로 국제 표준화 기구 (ISO)에 채택되었고 ISO가 게시한 최종 수정판들을 ANSI가 채택했음에도 불구하고 수많은 프로그래머들은 표준 참조를 위해 ANSI C를 사용하고 있다. 일부 소프트웨어 개발자들은 ISO C라는 용어를 사용하지만 표준화 기구에 상대적으로 중립적인 다른 이들은 표준 C로 부른다.
1983년, ANSI는 X3J11이라는 이름의 위원회를 설립하여 C의 표준 사양을 확립하였다. 이 표준은 1989년에 완성되어 ANSI X3.159-1989 "프로그래밍 언어 C"(Programming Language C)로 승인되었다. 이 버전의 언어는 ANSI C로 불리기도 한다. 나중에 C89라는 레이블을 사용하여 C99과 구별하게 된다.
서식 변화만을 제외하고 C89와 동일한 표준이 국제 표준화 기구에 의해 ISO/IEC 9899:1990로 승인되었으며,[ 1] C90으로 불리기도 한다. 그러므로 "C89"와 "C90"은 근본적으로 동일한 언어를 가리킨다.
이 표준은 ANSI/INCITS[ 2] 와 ISO/IEC에 의해 철회되었다.[ 3]
1995년에 ISO 는 ANSI-C 표준에 대한 개정 제1판인 확장판을 출판하였다. 최종 이름은 ISO/IEC 9899/AMD1:1995이며 별칭은 C95이다.
오류 정정 외에 언어 기능에 대한 추가적인 변경사항이 있었으며,[ 4] [ 5] 이를테면 다음과 같다:
표준 라이브러리에서의 개선된 멀티바이트 및 확장 문자 지원: <wchar.h>
, <wctype.h>
및 멀티바이트 I/O .
언어에 대한 이중 글자 추가
연산자의 대체 사양을 위한 표준 매크로 사양 (예: &&
의 경우 and
)
표준 매크로 __STDC_VERSION__
의 사양 개정판 외에도 C90에 대해 2가지 기술적 정오표가 ISO에 의해 출판되었다:
ISO/IEC 9899 TCOR1 (1995년)
ISO/IEC 9899 TCOR2 (1996년) #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L
/* C95 compatible source code. */
#elif defined(__ANSI__)
/* C89 compatible source code. */
#endif
ISO/IEC TR 19769:2004,[ 6] on library extensions to support Unicode transformation formats, integrated into C11
ISO/IEC TR 24731-1:2007,[ 7] on library extensions to support bounds-checked interfaces, integrated into C11
ISO/IEC TR 18037:2008,[ 8] on embedded C extensions
ISO/IEC TR 24732:2009,[ 9] on decimal floating point arithmetic, superseded by ISO/IEC TS 18661-2:2015
ISO/IEC TR 24747:2009,[ 10] on special mathematical functions,
ISO/IEC TR 24731-2:2010,[ 11] on library extensions to support dynamic allocation functions
ISO/IEC TS 17961:2013,[ 12] on secure coding in C
ISO/IEC TS 18661-1:2014,[ 13] on IEC 60559:2011 -compatible binary floating-point arithmetic
ISO/IEC TS 18661-2:2015,[ 14] on IEC 60559:2011-compatible decimal floating point arithmetic
ISO/IEC TS 18661-3:2015,[ 15] on IEC 60559:2011-compatible interchange and extended floating-point types
ISO/IEC TS 18661-4:2015,[ 16] on IEC 60559:2011-compatible supplementary functions TS 18661의 5번째 및 최종 부분, 소프트웨어 트랜잭셔널 메모리 사양, 병렬 라이브러리 확장을 포함하여 더 많은 기술 사양이 개발 중이며 승인을 대기하고 있다.[ 17]
Amsterdam Compiler Kit (C K&R 및 C89/90)
ARM 리얼뷰(RealView)
클랭 : LLVM 백엔드 사용
GCC (완전한 C89/90, C99, C11)
HP C/ANSI C 컴파일러 (C89 및 C99)[ 18]
IBM XL C/C++ (C11, 버전 12.1부터 시작)[ 19]
인텔의 ICC
LabWindows/CVI
LCC
오픈왓콤 (C89/90 및 일부 C99)
마이크로소프트 비주얼 C++ (C89/90 및 일부 C99)
Pelles C (C99 및 C11. 윈도우 전용)
vbcc (C89/90 및 C99)
타이니 C 컴파일러 (C89/90 및 일부 C99) C18 , C11 , C99 , C95, C90 , C89
C와 C++의 호환성
C++20 , C++17 , C++14 , C++11 , C++TR1 , C++03, C++98 , C++
목록: ISO 표준 목록
ISO 로마자 표기법 목록
IEC 표준 목록
1 ~ 9999 10000 ~ 19999 20000+