{{위키데이터 속성 추적}}
'''ANSI C''', '''ISO C''', '''표준 C'''(Standard C)는 [[미국 국립 표준 협회]](ANSI)와 [[국제 표준화 기구]](ISO)가 출판한 [[C (프로그래밍 언어)|C 프로그래밍 언어]]의 이후 표준들을 가리킨다. 역사적으로 이 이름들은 오리지널의 가장 잘 지원되는 버전의 표준(C89 또는 C90)을 가리켰다. C로 개발하는 소프트웨어 개발자들은 표준을 따르는 것을 권고받으며 그렇게 함으로써 컴파일러 간 [[이식 (컴퓨팅)|이식]]에 도움을 줄 수 있다.

== 역사 ==
C를 위한 최초 표준은 ANSI에 의해 출판되었다. 이 문서가 최종적으로 [[국제 표준화 기구]](ISO)에 채택되었고 ISO가 게시한 최종 수정판들을 ANSI가 채택했음에도 불구하고 수많은 프로그래머들은 표준 참조를 위해 ANSI C를 사용하고 있다. 일부 소프트웨어 개발자들은 ISO C라는 용어를 사용하지만 표준화 기구에 상대적으로 중립적인 다른 이들은 표준 C로 부른다.

=== C89 ===
1983년, ANSI는 X3J11이라는 이름의 위원회를 설립하여 C의 표준 사양을 확립하였다. 이 표준은 1989년에 완성되어 ANSI X3.159-1989 "프로그래밍 언어 C"(Programming Language C)로 승인되었다. 이 버전의 언어는 ANSI C로 불리기도 한다. 나중에 C89라는 레이블을 사용하여 C99과 구별하게 된다.

===C90===
서식 변화만을 제외하고 C89와 동일한 표준이 국제 표준화 기구에 의해 ISO/IEC 9899:1990로 승인되었으며,<ref>{{웹 인용|url=https://gcc.gnu.org/onlinedocs/gcc/Standards.html|title=Standards - Using the GNU Compiler Collection (GCC)|accessdate=2012-06-24}}</ref> C90으로 불리기도 한다. 그러므로 "C89"와 "C90"은 근본적으로 동일한 언어를 가리킨다.

이 표준은 ANSI/INCITS<ref name="ref1">http://www.techstreet.com/cgi-bin/detail?doc_no=incits_iso_iec%7C9899;product_id=232462</ref>와 ISO/IEC에 의해 철회되었다.<ref>{{웹 인용|url=http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=17782|title=ISO/IEC 9899:1990 - Programming Languages -- C|accessdate=2012-06-24}}</ref>

===C95===
1995년에 [[국제 표준화 기구|ISO]]는 ANSI-C 표준에 대한 개정 제1판인 확장판을 출판하였다. 최종 이름은 ISO/IEC 9899/AMD1:1995이며 별칭은 C95이다.
오류 정정 외에 언어 기능에 대한 추가적인 변경사항이 있었으며,<ref>{{웹 인용| url=http://www.lysator.liu.se/c/na1.html | title=A brief description of Normative Addendum 1 | author=Clive D.W. Feather | date=2010-09-12}}</ref><ref>{{웹 인용| url=http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=23909 | title=ISO/IEC 9899:1990/Amd 1:1995 | date=2013-03-22 | publisher= International Organization for Standardization}}</ref> 이를테면 다음과 같다:

* 표준 라이브러리에서의 개선된 멀티바이트 및 [[확장 문자]] 지원: <code><wchar.h></code>, <code><wctype.h></code> 및 [[멀티바이트 문자 집합|멀티바이트]] [[입출력|I/O]].
* 언어에 대한 [[이중 글자]] 추가
* 연산자의 대체 사양을 위한 표준 매크로 사양 (예: <code>&&</code>의 경우 <code>and</code>)
* 표준 매크로 <code>__STDC_VERSION__</code>의 사양

개정판 외에도 C90에 대해 2가지 기술적 정오표가 ISO에 의해 출판되었다:

* ISO/IEC 9899 TCOR1 (1995년)
* ISO/IEC 9899 TCOR2 (1996년)

==== C95 호환성을 위한 전처리기 테스트 ====
<syntaxhighlight lang="c" line="1">
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L

/* C95 compatible source code. */
#elif defined(__ANSI__)
/* C89 compatible source code. */
#endif
</syntaxhighlight>

=== C99 ===
{{본문|C99}}

=== C11 ===
{{본문|C11 (C 버전)}}

=== C18 ===
{{본문|C18}}

=== 기타 관련 ISO 출판 ===
* ISO/IEC TR 19769:2004,<ref>{{웹 인용|url=http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=33907|title=ISO/IEC TR 19769:2004|publisher=International Organization for Standardization}}</ref> on library extensions to support Unicode transformation formats, integrated into C11
* ISO/IEC TR 24731-1:2007,<ref>{{웹 인용|url=http://www.iso.org/iso/catalogue_detail.htm?csnumber=38841|title=ISO/IEC TR 24731-1:2007|publisher=International Organization for Standardization}}</ref> on library extensions to support bounds-checked interfaces, integrated into C11
* ISO/IEC TR 18037:2008,<ref>{{웹 인용|url=http://www.iso.org/iso/catalogue_detail.htm?csnumber=51126|title=ISO/IEC TR 18037:2008|publisher=International Organization for Standardization}}</ref> on embedded C extensions
* ISO/IEC TR 24732:2009,<ref>{{웹 인용|url=http://www.iso.org/iso/catalogue_detail.htm?csnumber=38842|title=ISO/IEC TR 24732:2009|publisher=International Organization for Standardization}}</ref> on [[decimal floating point]] arithmetic, superseded by ISO/IEC TS 18661-2:2015
* ISO/IEC TR 24747:2009,<ref>{{웹 인용|url=http://www.iso.org/iso/catalogue_detail.htm?csnumber=38857|title=ISO/IEC TR 24747:2009|publisher=International Organization for Standardization}}</ref> on special mathematical functions,
* ISO/IEC TR 24731-2:2010,<ref>{{웹 인용|url=http://www.iso.org/iso/catalogue_detail.htm?csnumber=51678|title=ISO/IEC TR 24731-2:2010|publisher=International Organization for Standardization}}</ref> on library extensions to support dynamic allocation functions
* ISO/IEC TS 17961:2013,<ref>{{웹 인용|url=http://www.iso.org/iso/catalogue_detail.htm?csnumber=61134|title=ISO/IEC TS 17961:2013|publisher=International Organization for Standardization}}</ref> on secure coding in C
* ISO/IEC TS 18661-1:2014,<ref>{{웹 인용|url=http://www.iso.org/iso/catalogue_detail.htm?csnumber=63146|title=ISO/IEC TS 18661-1:2014|publisher=International Organization for Standardization}}</ref> on [[IEEE 754|IEC 60559:2011]]-compatible binary floating-point arithmetic
* ISO/IEC TS 18661-2:2015,<ref>{{웹 인용|url=http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=68882|title=ISO/IEC TS 18661-2:2015|publisher=International Organization for Standardization}}</ref> on IEC 60559:2011-compatible [[decimal floating point]] arithmetic
* ISO/IEC TS 18661-3:2015,<ref>{{웹 인용|url=http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=65615|title=ISO/IEC TS 18661-3:2015|publisher=International Organization for Standardization}}</ref> on IEC 60559:2011-compatible interchange and extended floating-point types
* ISO/IEC TS 18661-4:2015,<ref>{{웹 인용|url=http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=65616|title=ISO/IEC TS 18661-4:2015|publisher=International Organization for Standardization}}</ref> on IEC 60559:2011-compatible supplementary functions
TS 18661의 5번째 및 최종 부분, 소프트웨어 트랜잭셔널 메모리 사양, 병렬 라이브러리 확장을 포함하여 더 많은 기술 사양이 개발 중이며 승인을 대기하고 있다.<ref>See a list at http://en.cppreference.com/w/c/experimental Visited 16 January 2016.</ref>

== ANSI C를 지원하는 컴파일러 ==
* [[Amsterdam Compiler Kit]] (C K&R 및 C89/90)
* [[ARM 홀딩스|ARM]] 리얼뷰(RealView)
* [[클랭]]: [[LLVM]] 백엔드 사용
* [[GNU 컴파일러 모음|GCC]] (완전한 C89/90, C99, C11)
* HP C/ANSI C 컴파일러 (C89 및 C99)<ref>{{웹 인용|title=HP C/ANSI C developer's bundle|url=http://www.hp.com/go/c|accessdate=2015-07-12}}{{깨진 링크|url=http://www.hp.com/go/c }}</ref>
* [[IBM XL C/C++]] (C11, 버전 12.1부터 시작)<ref>[http://www.ibm.com/developerworks/rational/library/support-iso-c11/index.html Support for ISO C11 added to IBM XL C/C++ compilers]</ref>
* [[인텔 C++ 컴파일러|인텔의 ICC]]
* [[LabWindows/CVI]]
* [[LCC (컴파일러)|LCC]]
* [[오픈왓콤]] (C89/90 및 일부 C99)
* [[비주얼 C++|마이크로소프트 비주얼 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++ 기술 보고서 1|C++TR1]], [[C++03]], [[C++98]], [[C++]]

== 각주 ==
{{각주}}

== 외부 링크 ==
* [http://www.open-std.org/jtc1/sc22/wg14/ ISO C working group]
* [https://web.archive.org/web/20161223125339/http://flash-gordon.me.uk/ansi.c.txt ''Draft ANSI C Standard'' (ANSI X3J11/88-090)] (May 13, 1988), [https://groups.google.com/group/comp.lang.c/msg/20b174b18cdd919d?hl=en Third Public Review]
* [https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BxVCLS4f8Sg5NWZmM2NjZWEtYmExMS00Y2EzLWE3ZTMtNzFmYjYwYzBiOTIw&hl=en_US ''Draft ANSI C Rationale'' (ANSI X3J11/88-151)] (Nov 18, 1988)
* [https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B-3PfyBhOSOxOTdjYmM1N2ItMmE0ZC00OGE3LTllODUtZDNkMDMzYWU3NDlk&hl=en_US ''C Information Bulletin #1'' (ANSI X3J11/93-007)] (May 27, 1992)
* [http://www.quut.com/c/ANSI-C-grammar-y.html ANSI C Yacc grammar]
** [http://www.lysator.liu.se/c/ANSI-C-grammar-l.html ANSI C grammar, Lex specification]
* {{서적 인용
 |first=Axel-Tobias
 |last=Schreiner
 |authorlink=Axel-Tobias Schreiner
 |title=Object oriented programming with ANSI-C
 |publisher=Hanser
 |isbn=3-446-17426-5
 |hdl=1850/8544
}}
* {{웹 인용
 |url          = http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+9899%3A1999
 |title        = ISO/IEC 9899:1999 Programming Languages -- C
 |publisher    = American National Standards Institute
 |확인날짜 = 2017년 12월 9일
 |보존url    = https://web.archive.org/web/20110725123312/http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+9899:1999
 |보존날짜 = 2011년 7월 25일
 |url-status = dead
}}{{
* {{웹 인용
   |url=http://publicaa.ansi.org/sites/apdl/Documents/Standards%20Action/2005%20PDFs/SAV3648.pdf
   |title=ANSI Standards Action Vol. 36, #48
   |publisher=American National Standards Institute
   |date=2005-12-02
   |확인날짜=2017-12-09
   |보존url=https://web.archive.org/web/20160304062427/http://publicaa.ansi.org/sites/apdl/Documents/Standards%20Action/2005%20PDFs/SAV3648.pdf
   |보존날짜=2016-03-04
   |url-status=dead
   }}

{{ISO 표준}}
{{C 프로그래밍 언어}}
{{전거 통제}}
{{기본정렬:Ansi C}}

[[분류:ANSI 표준]]
[[분류:C 프로그래밍 언어]]
[[분류:프로그래밍 언어 표준]]