ANSI C
ANSI C,ISO C,またはTiêu chuẩn Cとは,Mễ quốc quy cách hiệp hội(ANSI) およびQuốc tế chuẩn hoá cơ cấu(ISO) が phát hành したC ngôn ngữの tiêu chuẩn の tổng xưng である. Lịch sử にこれら の danh trước は đặc に, オリジナルであり, nhất もサポートされているバージョンであるC89およびC90の ことを chỉ す. C ngôn ngữ でプログラムを tác thành するソフトウェア khai phát giả は, コンパイラ gian のNhổ trồng tínhの ために, tiêu chuẩn に chuẩn 拠することが đẩy thưởng される.
Lịch sử と điểm chính
[Biên tập]C の lúc ban đầu の tiêu chuẩn はANSIによって phát hành された. こ の công văn は sau にISOによって thải 択され, ISOによって công biểu されたそ の sau の đặt lại bản もANSIによって thải 択されているが, “ISO C” ではなく “ANSI C” という tên がより quảng く sử dụng されている. Một bộ の ソフトウェア khai phát giả は “ISO C” という dùng từ を sử dụng しているが, hắn の ソフトウェア khai phát giả は phát hành tổ chức に trung lập な “Tiêu chuẩn C” という dùng từ を sử dụng している.
C89
[Biên tập]1983 năm, ANSIがC ngôn ngữ の tiêu chuẩn sĩ dạng を xác lập するため の ủy ban ・X3J11を thiết lập した. こ の quy cách は1989 năm に hoàn thành し, ANSI X3.159-1989 “プログラミング ngôn ngữ C” として thải 択された. こ の バージョンは, しばしば “ANSI C” と hô ばれる. そ の sau, C99が phát biểu されてからは, それ trước kia の バージョンについても cùng dạng の mệnh danh pháp で hô ばれるようになり, こ の バージョンは “C89” とも hô ばれるようになった.
C90
[Biên tập]C89 の フォーマットを変 càng しただけ[1]の tiêu chuẩn が, ISOによってISO/IEC 9899:1990として thải 択された. こ の tiêu chuẩn はC90と hô ばれることがある. C89とC90は bản chất には cùng じ ngôn ngữ である.
こ の tiêu chuẩn は sau に, ANSI/INCITS[2],ISO/IEC[3]の hai bên によって rút về されている.
C95
[Biên tập]1995 năm, ISOはANSI-C tiêu chuẩn の 拡 trương, Amendment 1を phát hành した. Chính thức tên はISO/IEC 9899/AMD1:1995であり, C95というニックネームを phó けた. Lầm り の đính chính の hắn, dưới の ような ngôn ngữ の năng lực の さらなる変 càng があった[4][5].
wchar.h
とwctype.h
およびI/O の dẫn vào による,Tiêu chuẩn ライブラリで のマルチバイト văn tựおよびワイド văn tựĐối ứng の cải thiện- Ngôn ngữ へ のダイグラフの thêm vào
- Tính toán tử の thay thế sĩ dạng の ため の tiêu chuẩn マクロ の sĩ dạng hóa (
&&
→and
など ) - Tiêu chuẩn マクロ
__STDC_VERSION__
の sĩ dạng hóa
こ の đặt lại に thêm えて, 2つ の C90 の đính chính biểu がISOによって phát hành された.
- ISO/IEC 9899 TCOR1 ( 1995 năm )
- ISO/IEC 9899 TCOR2 ( 1996 năm )
C95 trao đổi tính を xác nhận するプリプロセッサテスト
[Biên tập]#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L
/* C95 compatible source code. */
#elif defined(__ANSI__)
/* C89 compatible source code. */
#endif
C99
[Biên tập]2000 năm 3 nguyệt, ANSIはISO/IEC 9899:1999を thải 択した. こ の quy cách は, giống nhau に “C99” と hô ばれている. こ の tiêu chuẩn で の chú mục すべき thêm vào điểm は, dưới の thông りである.
- Tân しい tổ み込みデータ hình:
long long
,_Bool
,_Complex
,_Imaginary
Tĩnh xứng liệt インデックス, chỉ định lúc đầu hóa tử, hợp lại リテラル,Nhưng 変 trường xứng liệt,フレキシブル xứng liệt メンバ,Nhưng 変 trường マクロ,restrict
キーワードなど の, tân しいコア ngôn ngữ cơ năng
stdint.h
,tgmath.h
,fenv.h
,complex.h
など の tân しいライブラリヘッダ- インライン quan số,Một hàngコメント,Tuyên ngôn とコード の ミックス, ユニバーサルキャラクタ danh など の, C++ cơ năng と の trao đổi tính の hướng về phía trước
- Ám mặc な quan số tuyên ngôn や ám mặc の
int
など, いくつか の nguy 険なC89 ngôn ngữ cơ năng を trừ bỏ
3つ の C99 の đính chính biểu がISOによって phát hành された.
- ISO/IEC 9899:1999/Cor.1:2001(E)
- ISO/IEC 9899:1999/Cor.2:2004(E)
- ISO/IEC 9899:1999/Cor.3:2007(E) - tiêu chuẩn ライブラリ quan số
gets
を phi đẩy thưởng とした
こ の quy cách は, sau thuật の C11 の リリースをもって,???[Ai?][6]とISO/IEC[7]の hai bên によって廃 ngăn された.
C11
[Biên tập]2011 năm ngày 8 tháng 12 にISO/IEC 9899:2011( thường gọiC11) として đặt lại された. こ の バージョンで dẫn vào された chú mục すべき cơ năng には, cải tiến されたUnicodeĐối ứng, tân しい_Generic
キーワードを sử dụng するタイプジェネリック thức, クロスプラットフォーム のマルチスレッドAPI (<threads.h>
), コア ngôn ngữ とライブラリ (<stdatomic.h>
) の lạng phương で のアトミックHình đối ứng がある.
1つ の C11 の đính chính biểu がISOによって phát hành された.
- ISO/IEC 9899:2011/Cor 1:2012[8]
C17
[Biên tập]2018 năm にISO/IEC 9899:2018( thường gọiC17またはC18) として đặt lại された. Sĩ dạng の thiếu 陥 tu chỉnh がメイン の マイナーアップデートである[9].
そ の hắn の quan liền するISO phát hành vật
[Biên tập]ISOは, chuẩn hoá プロセス の một vòng として, C ngôn ngữ に quan liền する kỹ thuật レポート (technical report) と sĩ dạng thư (specification) も công khai している.
- ISO/IEC TR 19769:2004[10]- Unicode変 đổi フォーマットに đối ứng するライブラリ拡 trương について. C11に thống hợp
- ISO/IEC TR 24731-1:2007[11]- cảnh giới チェックされたインタフェースに đối ứng するライブラリ拡 trương について. C11に thống hợp
- ISO/IEC TR 18037:2008[12]- tổ み込みプロセッサをサポートするため の C拡 trương について
- ISO/IEC TR 24732:2009[13]- ISO/IEC TS 18661-2:2015に đại わるMười tiến di động số lẻTính toán について
- ISO/IEC TR 24747:2009[14]- đặc thù な toán học quan số について
- ISO/IEC TR 24731-2:2010[15]- động cắt り đương て cơ năng に đối ứng するライブラリ拡 trương について
- ISO/IEC TS 17961:2013[16]- C の an toàn なコーディングについて
- ISO/IEC TS 18661-1:2014[17]-IEC 60559:2011に chuẩn 拠した nhị tiến di động số lẻ tính toán
- ISO/IEC TS 18661-2:2015[18]- IEC 60559:2011と trao đổi tính の ある mười tiến di động số lẻ tính toán
- ISO/IEC TS 18661-3:2015[19]- IEC 60559:2011 trao đổi の インターチェンジおよび拡 trương di động số lẻ hình
- ISO/IEC TS 18661-4:2015[20]- IEC 60559:2011に chuẩn 拠した trợ cấp cơ năng
TS 18661 の 5 phiên mục と cuối cùng の bộ phận, ソフトウェアトランザクショナルメモリ sĩ dạng, ライブラリ拡 trương など の nhiều く の kỹ thuật sĩ dạng が khai phát trung で thừa nhận đãi ちである[21].
Chủ yếu なコンパイラによる đối ứng
[Biên tập]ANSI Cは hiện tại quảng く sử dụng されているほとんど の コンパイラが đối ứng している. Hiện thời điểm で thư かれているC ngôn ngữ の ソースコード の ほとんどは, ANSI Cをベースにしている. Tiêu chuẩn Cで thư かれ, ハードウェアに sống nhờ vào nhau する仮 định を cầm たないプログラムは, chuẩn 拠したC thật trang の プラットフォームで chính しくコンパイルされることが bảo đảm されている. こ の ような dư phòng sắp xếp を giảng じないと, ほとんど の プログラムはGUIライブラリなど の phi tiêu chuẩn ライブラリ の sử dụng やコンパイラ cố hữu の thuộc tính やプラットフォーム cố hữu の thuộc tính の sử dụng などにより, riêng の プラットフォームまたは riêng の コンパイラでしかコンパイルされないことになる ( riêng の データ hình の chính xác なサイズやエンディアンなど ).
K&R CとANSI C の vi いを hòa hoãn するために,__STDC__
マクロを sử dụng してコードをANSIセクションとK&Rセクションに phân cách することができる.
#if defined(__STDC__) && __STDC__
externintgetopt(int,char*const*,constchar*);
#else
externintgetopt();
#endif
ANSI Cに đối ứng するコンパイラ
[Biên tập]- アムステルダム・コンパイラ・キット( C K&R と C89/90 )
- ARMRealView
- Clang(LLVMバックエンドを sử dụng )
- GCC( C89/90, C99, C11 hoàn toàn đối ứng )
- PCC( C89, C99, C11 )
- HP C/ANSI Cコンパイラ (C89, C99)[22]
- IBM XL C/C++コンパイラ(C11, starting with version 12.1)[23]
- Intel C++ Compiler
- LabWindows/CVI
- LCC
- OpenWatcom(C89/90 and some C99)
- Microsoft Visual C++(C89/90 and some C99)
- Pelles C(C99, Windows only.)
Quan liền hạng mục
[Biên tập]- CとC++ の trao đổi tính
- C++17,C++14,C++11,C++03,C++98- C++ の バージョン
- C++ Technical Report 1
Chú thích
[Biên tập]- ^“Standards - Using the GNU Compiler Collection (GCC)”.2012 năm ngày 24 tháng 6Duyệt lãm.
- ^http:// techstreet /cgi-bin/detail?doc_no=incits_iso_iec%7C9899;product_id=232462
- ^“ISO/IEC 9899:1990 - Programming Languages -- C”.2012 năm ngày 24 tháng 6Duyệt lãm.
- ^Clive D.W. Feather (2010 năm ngày 12 tháng 9 ). “A brief description of Normative Addendum 1”.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC 9899:1990/Amd 1:1995”.International Organization for Standardization (2013 năm ngày 22 tháng 3 ).2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“INCITS/ISO/IEC 9899-2012”.ANSI.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC 9899:1999 - Programming Languages -- C”.2012 năm ngày 24 tháng 6Duyệt lãm.
- ^“ISO/IEC 9899:2011/Cor 1:2012”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^C の lịch sử - cppreference
- ^“ISO/IEC TR 19769:2004”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC TR 24731-1:2007”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC TR 18037:2008”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC TR 24732:2009”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC TR 24747:2009”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC TR 24731-2:2010”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC TS 17961:2013”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC TS 18661-1:2014”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC TS 18661-2:2015”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC TS 18661-3:2015”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^“ISO/IEC TS 18661-4:2015”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
- ^See a list athttp://en.cppreference /w/c/experimentalVisited 16 January 2016.
- ^“HP C/ANSI C developer's bundle”.2015 năm ngày 12 tháng 7Duyệt lãm.
- ^Support for ISO C11 added to IBM XL C/C++ compilers
Phần ngoài リンク
[Biên tập]- ISO C working group
- Draft ANSI C Standard(ANSI X3J11/88-090)(May 13, 1988),Third Public Review
- Draft ANSI C Rationale(ANSI X3J11/88-151)(Nov 18, 1988)
- C Information Bulletin #1(ANSI X3J11/93-007)(May 27, 1992)
- ANSI C Yacc grammar
- Schreiner, Axel-Tobias.Object oriented programming with ANSI-C.Hanser.hdl:1850/8544.ISBN3-446-17426-5
- “ISO/IEC 9899:1999 Programming Languages -- C”.American National Standards Institute.2017 năm ngày 1 tháng 8Duyệt lãm.
- “ANSI Standards Action Vol. 36, #48”.American National Standards Institute (2005 năm ngày 2 tháng 12 ).2017 năm ngày 1 tháng 8Duyệt lãm.