현재 C 또는 C++ 표준 문서는 어디에서 찾을 수 있는가?
많은 질문에 대한 해답은 "표준"에서 찾을 수 있을 것 같다.하지만, 우리는 그것을 어디서 찾을 수 있을까?온라인에서 하는 것이 좋다.
프로그래밍 포럼에 대한 토론의 홍수 속에 빠져들었기 때문에, 구글링은 때로, 특히 C 표준에 대해 다시 한번 헛된 감정을 느낄 수 있다.
시작하기 위해 현재 검색 중인 온라인 리소스 중 어디에 적합한지 알아보십시오.
- C89
- C99
- C11
- C++98
- C++03
- C++11
- C++14
- C++17
PDF 버전의 표준
을 기준으로
2014년 9월 1일 2022년 3월 PDF의 공식 C 및 C++ 표준 문서에 대한 가격별 최적 위치는 다음과 같다.
C++20 – ISO/IEC 14882:118:212 CAD(약 $US) csagroup.org
C++17 – ISO/IEC 14882:2017: 뉴질랜드 표준에서 $90 NZD(약 65 US달러)
C++14 – ISO/IEC 14882:2014: 뉴질랜드 표준에서 $90 NZD(약 65 US달러)
C++11 – ISO/IEC 14882-2011: ansi.org에서 $60 또는 Techstreet에서 $60.
C++03 – INCITS/ISO/IEC 14882:2003: $30 from ansi.org
C++98 – ISO/IEC 14882:1998: 뉴질랜드 표준에서 $95 NZD(약 65 US달러)
C17/C18 – INCITS/ISO/IEC 9899:2018:2018: INCITS/ANSI / N2176 / c17_update_proproposed_fdis.pdf 초안 (링크 파손, 웨이백 머신 N2176 참조)
C11 – ISO/IEC 9899:2011:2011: $60 from ansi.org / WG14 초안 버전 N1570
C99 – INCITS/ISO/IEC 9899-1999(R2005):$60 from ansi.org / WG14 초안 버전 N1256
C90 – ISO/IEC 9899:1990: 뉴질랜드 표준에서 $90 NZD(약 65 USD)
PDF가 아닌 표준 전자 버전
경고: 대부분의 표준 초안 사본은 PDF 형식으로 발행되며, 텍스트/HTML이 PDF에서 필사되었거나 자동으로 생성된 경우 오류가 발생할 수 있다.
- C89 – ANSI 텍스트 형식의 초안 버전: (https://web.archive.org/web/20161223125339/http://flash-gordon.me.uk/ansi.c.txt)
- C89 – HTML 문서로 작성된 초안 버전: (http://port70.net/~nsz/c89/c89-c89-164.18)
- C90 TC1, ISO/IEC 9899 TCOR1, 한 페이지 HTML 문서: (http://www.open-std.org/jtc1/sc22/wg14/www/docs/tc1.htm)
- C90 TC2; ISO/IEC 9899 TCOR2, 한 페이지 HTML 문서: (http://www.open-std.org/jtc1/sc22/wg14/www/docs/tc2.htm)
- C99 – HTML 문서로 초안 버전(N1256): (http://port70.net/~nsz/c/c99/n1256.18)
- C11 – HTML 문서로 초안 버전(N1570): (http://port70.net/~nsz/c/c11/n1570.18)
- C++11 – 일반 텍스트 문서로 작성된 작업 초안(N3337): (http://port70.net/~nsz/c/c%2B%2B/c%2B/c%2B%2B11_n3337.txt)
(C++11 작업 초안의 일반 텍스트 버전을 호스팅하는 사이트에는 이러한 형식의 C++14 초안도 일부 있다.그러나 이들 중 어느 것도 최종 작업 초안인 N4140의 사본은 아니다.)
표준 버전 인쇄
표준의 인쇄본은 국가 표준 기구와 ISO에서 구할 수 있지만 매우 비싸다.
위보다 훨씬 적은 비용으로 C90 표준의 하드카피를 원한다면, 표준의 실제 텍스트(유용한)와 표준에 대한 해설(저용한 - 위험하고 오해의 소지가 있는 몇 가지 오류를 포함)을 수록한 허브 쉴트의 저서 The Annotated ANSI Standard의 값싼 중고 사본을 아마존에서 찾을 수 있을 것이다.
C99 및 C++03 표준은 Wiley와 BSI(British Standards Institute)에서 도서 형태로 이용할 수 있다.
표준 위원회 초안 버전(무료)
미래 표준을 위한 작업 초안은 위원회 웹사이트에서 종종 이용할 수 있다.
현재 또는 이전 C/C++ 표준에서 초안을 받고자 하는 경우, 인터넷에서 무료로 이용할 수 있는 몇 가지가 있다.
C의 경우:
ANSI X3.159-198 (C89) : C89의 PDF는 찾을 수 없지만 C90과 거의 같다.주요 차이점은 보일러 플레이트와 섹션 번호 매기기뿐이지만 약간의 텍스트 차이는 있다.
ISO/IEC 9899:1990(C90): (전면 매터와 섹션 번호 매칭을 제외하고 거의 ANSI X3.159-198(C89)과 동일하다.제6.5.7절(이전 3.5.7절)에서 "목록"이 "중첩-폐쇄목록"이 된 부분에는 적어도 하나의 텍스트 차이가 있다.ANSI와 ISO/IEC 표준 간의 변환이 이 문서 내부에서 확인된다는 점에 유의하십시오. 이 문서는 "ANSI/ISO: 9899/99"라고 부르지만, 이후 만들어진 표준의 올바른 명칭은 아니지만, 올바른 명칭은 "ISO/IEC 9899:1990"이다.)
C90용 TC1: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n423.pdf
안타깝게도 WG14 웹사이트에는 TC2에 대한 PDF 링크가 없다.
ISO/IEC 9899:1999(C99 3가지 Technical Corrigenda를 모두 포함하는):http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
TC1 및 TC2만 포함된 이전 버전의 C99: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
원본에 대한 작업 초안(예: 사전 개조) C99: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n843.htm(HTML) 및 http://www.dkuug.dk/JTC1/SC22/WG14/www/docs/n843.pdf(PDF)이후 작업 초안은 N869와 N878 두 가지가 있었지만, WG14 웹사이트에서 삭제된 것으로 보여, 이것이 가장 최근에 이용할 수 있는 초안이라는 점에 유의한다.
C89/C90과 C99 사이의 변경 목록: http://port70.net/~nsz/c89/c9x_message.dll
C99용 TC1(TC만 해당, 이를 포함하는 표준은 제외): http://www.open-std.org/jtc1/sc22/wg14/www/docs/9899tc1/n32071.PDF
C99용 TC2(TC만 해당, 이를 포함하는 표준은 제외): http://www.open-std.org/jtc1/sc22/wg14/www/docs/9899-1999_cor_2-2004.pdf
ISO/IEC 9899:2011(C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
N1570과 최종 발행된 C11 버전의 차이점에 대한 자세한 내용은 C11 및 https://groups.google.com/g/comp.std.c/c/v5hsWOu5vSw의 최신 변경 사항을 참조하십시오.
ISO/IEC 9899:2011/Cor 1:2012(C11의 유일한 기술 코리겐덤):이는 https://www.iso.org/obp/ui/#iso:std:iso-iec:9899:ed-3:v1:cor:1:v1:en에서 볼 수 있으나 다운로드할 수 없다.그것은 초안이 아니라 실제 골격이다.
ISO/IEC 9899:2018(C17/C18): https://web.archive.org/web/20181230041359if_/http:///www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf(N2176)
C2x 현재 작업 중 - 2020년 10월 18일 현재 최신 작업 초안(N2731): http://www.open-std.org/JTC1/SC22/WG14/www/docs/n2731.pdf
C++의 경우:
ISO/IEC 14882:1998(C++98):http://www.lirmm.fr/~ducour/Doc-objets/ISO+IEC+14882-1998.pdf
ISO/IEC 14882:2003(C++03):https://cs.nyu.edu/courses/fall11/CSCI-GA.2110-003/documents/c++2003std.pdf
ISO/IEC 14882:2011(C++11):http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
ISO/IEC 14882:2014(C++14):https://github.com/cplusplus/draft/blob/master/papers/n4140.pdf?raw=true
ISO/IEC 14882:2017(C++17):http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf
ISO/IEC 14882:2020(C++20):https://isocpp.org/files/papers/N4860.pdf
ISO/IEC 14882:2023(C++23 진행 중).2021년 3월 17일자 작업 초안: http://open-std.org/JTC1/SC22/WG21/docs/papers/2021/n4885.pdf
표준을 결정하는 회의 직전 버전은 일반적으로 최종 표준에 있는 것과 매우 유사하지만, 이러한 문서는 표준과 같지 않다는 점에 유의하십시오.FCD(Final Committee Graft) 버전은 암호로 보호되며, 표준 위원회에 있어야 가져올 수 있다.
초안 버전이 최종 비준된 표준 버전과 매우 유사할 수 있지만, 이 게시물의 편집자 중 일부는 특히 참고 자료로 인용할 계획인 경우 실제 문서의 사본을 얻을 것을 강력히 권고할 것이다.물론, 굶주린 학생들은 현금이 부족하면 그 초안을 이용해야 한다.
표준 비준 후 몇 달 동안 기다릴 의지와 능력이 있다면 표준을 찾을 때 'ISO/IEC' 대신 'INCITS/ISO/IEC'를 검색하는 것이 관건인 것으로 보인다.그렇게 함으로써, 이 포스트의 편집자 중 한 명이 합리적인 가격에 C11과 C++11 표준을 찾을 수 있었다.예를 들어 webstore.ansi.org에서 "ISO/IEC 9899:2011" 대신 "INCITS/ISO/IEC 9899:2011"을 검색하면 합리적인 가격의 PDF 버전을 찾을 수 있다.
사이트 https://wg21.link/는 C++의 현재 작업 초안 및 초안 표준에 대한 짧은 URL 링크와 다음 위원회 문서를 제공한다.
- https://wg21.link/std11 - C++11
- https://wg21.link/std14 - C++14
- https://wg21.link/std17 - C++17
- https://wg21.link/std20 - C++20
- https://wg21.link/std - 현재 작업 초안
표준의 현재 초안은 Github에 대한 LaTeX 출처로 유지된다.이러한 소스는 cxxdraft-htmlgen을 사용하여 HTML로 변환할 수 있다.다음 사이트는 HTML 페이지를 유지 관리하며,
Tim Song은 또한 Networking TS 및 Ranges TS의 생성된 HTML 및 PDF 버전을 유지 관리한다.
POSIX를 C 표준으로 확장
POSIX 표준(IEEE 1003.1)은 C 컴파일러를 포함하도록 호환되는 운영 체제를 요구한다.이 컴파일러는 차례로 C 표준을 준수해야 하며, POSIX의 "시스템 인터페이스" 섹션에 정의된 다양한 확장 기능도 지원해야 한다(예:off_t
데이터 유형,<aio.h>
머리글, 더clock_gettime()
기능과_POSIX_C_SOURCE
매크로)
그래서 만약 당신이 특정한 기능을 찾으려고 노력했다면, "이 기능은 C 표준이 아닌 POSIX의 일부분이다"라는 통보를 받았고, 왜 운영 체제 표준이 컴파일러 특징과 언어 확장을 의무화하고 있는지 궁금했다.이제 알겠지!
POSIX.1-2001:시스템 인터페이스 섹션은 https://mirror.math.princeton.edu/pub/oldlinux/download/c951.pdf에서 별도의 문서로 다운로드할 수 있다.제1.7절에 C 표준의 관련 버전은 C99라고 기술되어 있다.
Shell and Utilities 섹션(https://mirror.math.princeton.edu/pub/oldlinux/download/c952.pdf)은 C99 호환 컴파일러가 존재해야 할 뿐만 아니라 "c99"라는 이름으로 명령줄에서 호출할 수 있어야 한다고 규정하고 있다.이를 구현할 수 있는 한 가지 방법은 /usr/bin에 "c99"라는 셸 스크립트를 배치하는 것으로, /usr/bin은 gcc를 gcc로 부른다.
-std=c99
명령줄 매개 변수 목록에 추가된 옵션으로, 경쟁 표준이 지정되지 않도록 차단한다.POSIX.1-2001에는 2002년과 2004년의 두 가지 기술적 코리겐다가 있었다.위와 같이 서류에 통합되어 있지 않은 것 같아.https://pubs.opengroup.org/onlinepubs/009695399/에 corrigenda를 통합한 온라인 HTML 버전이 있다. 하지만 내가 검색 상자에 문제가 있어서 구글을 사용하여 사이트를 검색하는 것이 아마도 가장 좋은 방법일 것이다.
https://standards.ieee.org/standard/1003_1-2001-Cor1-2002.html에서 첫 번째 corrigendum을 다운로드 할 수 있는 유료 링크가 있다.
https://standards.ieee.org/standard/1003_1-2001-Cor2-2004.html에 두 번째 유료 링크도 있다.
POSIX.1-2008 초안은 http://www.open-std.org/jtc1/sc22/open/n4217.pdf에 있다.
POSIX.1-2008은 또한 2016년 날짜의 두 가지 기술적 코리겐다를 가지고 있다.https://pubs.opengroup.org/onlinepubs/9699919799.2016edition/에서 corrigenda를 통합한 표준의 온라인 HTML 버전이 있다. 그러나 나는 다시 한번 사이트 자체의 검색 상자가 정보를 찾는데 좋지 않은 상황을 겪었다.
POSIX.1-2017의 온라인 HTML 버전이 https://pubs.opengroup.org/onlinepubs/9699919799/에 있지만, 나는 그 사이트의 검색 상자 대신 구글을 사용하는 것을 추천한다.오픈 그룹 웹사이트에 따르면, "IEEE 1003.1-2017은 1003.1-2008 표준의 개정판이며, 두 가지 기술 코리젠다(as-is)"를 포함한다.리눅스 맨 페이지는 기술 코리젠다 1과 2가 적용된 POSIX.1-2008과 "기술적으로 동일하다"고 설명한다.따라서 이는 주요 개정 사항이 아니며, 이 값도 변경되지 않는다.
_POSIX_C_SOURCE
매크로의
표준의 온라인 버전은 다음을 찾을 수 있다.
작업 초안, 프로그래밍 언어 C++ 표준
표준의 모든 초안 버전:
다음 모든 항목을 무료로 다운로드할 수 있음
2021-06-18: N4892
2021-03-17: N4885
2020-12-15: N4878
2020-10-18: N4868
2020-04-08: N4861
다음은 C++20 표준:
이 버전에는 인증이 필요함
2020-04-08: N4860
표준의 모든 초안 버전:
다음 모든 항목을 무료로 다운로드할 수 있음
(이 중 상당수는 이 주 GitHub 링크에서 찾을 수 있음)
2020-01-14: N4849
2019-11-27: N4842
2019-10-08: N4835git
2019-08-15: N4830git
2019-06-17: N4820git
2019-03-15: N4810git
2019-01-21: N4800git
2018-11-26: N4791git
2018-10-08: N4778git
2018-07-07: N4762git
2018-05-07: N4750git
2018-04-02: N4741git
2018-02-12: N4727git
2017-11-27: N4713git
2017-10-16: N4700git
2017-07-30: N4687git
이것은 구 C++17 표준이다.
이 버전에는 인증이 필요함
2017-03-21: N4660
표준의 모든 초안 버전:
다음 모든 항목을 무료로 다운로드할 수 있음
2017-03-21: N4659git
2017-02-06: N4640git
2016-11-28: N4618git
2016-07-12: N4606git
2016-05-30: N4594git
2016-03-19: N4582git
2015-11-09: N4567git
2015-05-22: N4527git
2015-04-10: N4431git
2014-11-19: N4296git
이것은 기존의 C++14 표준이다.
이 버전에는 인증이 필요함
2014-10-07: N4140git 본질적으로 사소한 오류와 오타가 수정된 C++14
2014-09-02: N4141git Standard C++14
2014-03-02: N3937
2014-03-02: N3936git
표준의 모든 초안 버전:
다음 모든 항목을 무료로 다운로드할 수 있음
2013-10-13: N3797git
2013-05-16: N3691
2013-05-15: N3690
2012-11-02: N3485
2012-02-28: N3376
2012-01-16: N3337git 본질적으로 사소한 오류와 오타가 수정된 C++11
이것은 구 C++11 표준이다.
이 버전에는 인증이 필요함
2011-04-05: N3291
표준의 모든 초안 버전:
다음 모든 항목을 무료로 다운로드할 수 있음
2011-02-28: N3242(N3291과의 차이가 매우 작음)
2010-11-27: N3225
2010-08-21: N3126
2010-03-29: N3090
2010-02-16: N3035
2009-11-09: N3000
2009-09-25: N2960
2009-06-22: N2914
2009-03-23: N2857
2008-10-04: N2798
2008-08-25: N2723
2008-06-27: N2691
2008-05-19: N2606
2008-03-17: N2588
2008-02-04: N2521
2007-10-22: N2461
2007-08-06: N2369
2007-06-25: N2315
2007-05-07: N2284
2006-11-03: N2134
2006-04-21: N2009
2005-10-19: N1905
2005-04-27: N1804
다음은 기존 C++03 표준:
아래의 모든 버전에는 인증이 필요함
2004-11-05: N1733
2004-07-16: N1655 비공식
2004-02-07: N1577 C++03(또는 매우 근접)
2001-09-13: N1316 기술장벽 확장 초안 초안
1997-00: N1117 확장된 기술 Corrigendum 초안
표준의 모든 초안 버전:
다음 모든 항목을 무료로 다운로드할 수 있음
1996-00: N0836 초안 확장 기술 Corrigendum
1995-00-00: N0785 국제정보시스템 국제표준 초안 작성 - 프로그래밍 언어 C++
기타 흥미로운 문서:
2022 / 2021 / 2020 / 2019 / 2018 / 2017 / 2016 / 2015 / 2014 / 2013 / 2012 / 2011
ANSI C 표준 초안(일명 C.89)의 본문은 온라인에서 구할 수 있다.이는 ISO C 표준(C.90)에 의해 승인되기 전에 ANSI 위원회가 표준화하였으므로, 섹션의 번호 매기는 (ANSI 섹션 2 ~ 4는 ISO 섹션 5 ~ 7에 대략 해당됨) 내용이 대체로 동일하지만, (제공된 것으로 간주됨) 차이가 있다.
초안 링크:
C++11(+편집기 수정):N3337 HTML, PDF
C++14(+편집기 수정):N4140 HTML, PDF
C99 N1256
이 기준서의 초안은 비준과 공표에 앞서 검토의견을 받기 위해 회람된다.
작업 초안은 현재 시행 중인 표준이 아니며 정확히 발표된 표준도 아니라는 점에 유의하십시오.
C99는 온라인에서 이용할 수 있다.www.open-std.org에서 인용한 내용:
이 표준의 가장 최근에 공개적으로 사용할 수 있는 버전은 2007-09-07년 날짜의 C99 + TC1 + TC2 + TC3, WG14 N1256이다.이것은 WG14 작업용지지만, 발행 당시 통합기준을 반영한다.
ISO 표준은 적당한 양(PDF 버전의 경우)에서 조금 더 많은 양(도서 버전의 경우)에 이르는 비용이 든다.
그러나 그것들은 마무리되지 않았지만, 보통 초안으로서 온라인에서 발견될 수 있다.대부분의 경우 최종본은 지난 초안과 크게 다르지 않기 때문에 완벽하지는 않지만, 잘 어울릴 것이다.
실제 표준은 아니지만 C94/95라고 하는 ISO C(C89/90) 또는 규범적 부록 1에 대한 개정이 있다.클랑과 같은 컴파일러를 통해 특정할 수 있지만, C99에 통합되었다.-std=c94
지휘 계통에서ISO/IEC 9899:1990/Amd 1:1995는 SAI GLOBAL(PDF 또는 하드 카피)에서 고액의 가격으로 구입할 수 있다.
문서의 요약은 여기에서 찾을 수 있다.
1990년 국제표준 채택을 위해 ANSI C 표준 초안이 검토되고 있을 때 국제화 문제를 다루지 않았기 때문에 몇 가지 반대가 있었다.이 기준서는 이미 제정된 지 몇 년이 되었기 때문에, 근거(예: 하위조항 7.10.7의 기능이 추가됨)를 제공하기 위해 몇 가지 변경이 이루어지며, 이 기준서의 적절한 국제화를 위해 별도로 작업을 수행하기로 합의하였다.이 일은 규범 부록 1에서 절정에 달했다.
규범적 부록 1은 국제 문자 집합의 한계와 약속 모두에 대한 C의 반응을 구체화한다.디그그래프와 헤더는 예를 들어 { 또는 }자 없이 ISO 646의 국가 변형으로 작성된 C 프로그램의 외관을 개선하기 위한 것이었다.주파수의 다른 쪽 끝에서, 구 기준서의 거의 적절하지 않은 기초를 넓은 문자와 멀티바이트 문자열을 취급하기 위한 완전하고 일관된 유틸리티 집합으로 연결 및 확장한다.
This document summarizes Normative Addendum 1. It is intended to quickly inform readers who are already familiar with the Standard; it does not, and cannot, introduce the complex subject matter behind NA1, nor can it replace the original document as a reference manual. (Nevertheless, it tries to be as accurate as possible, and its author would like to hear about any errors or omissions.)
The actual standards documents may not be the most useful. Most compilers do not fully implement the standards and may sometimes actually conflict. So the compiler documentation that you would already have will be more useful. Additionally, the documentation will contain platform-specific remarks and notes on any caveats.
You might find the draft international standard for C++0x useful.
The C99 and C++03 standards are available in book form from Wiley:
Plus, as already mentioned, the working draft for future standards is often available from the committee websites:
The C-201x draft is available as N1336, and the C++0x draft as N3225.
The ISO C and C++ standards are bloody expensive. On the other hand, the INCITS republishes them for a lot less. http://www.techstreet.com/ seems to have the PDF for $30 (search for INCITS/ISO/IEC 14882:2003).
Hardcopy versions are available, too. Look for the British Standards Institute versions, published by Wiley.
ReferenceURL : https://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents
'Programing' 카테고리의 다른 글
C에서 char 배열을 복사하는 방법? (0) | 2022.04.29 |
---|---|
ConcurrentHashMap 대 동기화된 해시맵 (0) | 2022.04.29 |
Vuex 2.0 디스패치 대 커밋 (0) | 2022.04.29 |
사전 정의된 CSS 스타일을 Vue에서 생성하는 방법(각도에서 할 수 있는 것처럼) (0) | 2022.04.29 |
Axios의 Cors OPTION 메서드가 Laravel 및 Nginx와 함께 실패함 (0) | 2022.04.29 |