コンテンツにスキップ

ANSI C

Xuất xứ: フリー bách khoa sự điển 『ウィキペディア ( Wikipedia ) 』

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 している.

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ô ばれるようになった.

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ề されている.

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].

こ の đặ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

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 メンバ(Tiếng Anh bản),Nhưng 変 trường マクロ,restrict(Tiếng Anh bản)キーワードなど の, 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 された.

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]

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ẻ(Tiếng Anh bản)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]

Quan liền hạng mục

[Biên tập]

Chú thích

[Biên tập]
  1. ^Standards - Using the GNU Compiler Collection (GCC)”.2012 năm ngày 24 tháng 6Duyệt lãm.
  2. ^http:// techstreet /cgi-bin/detail?doc_no=incits_iso_iec%7C9899;product_id=232462
  3. ^ISO/IEC 9899:1990 - Programming Languages -- C”.2012 năm ngày 24 tháng 6Duyệt lãm.
  4. ^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.
  5. ^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.
  6. ^INCITS/ISO/IEC 9899-2012”.ANSI.2017 năm ngày 1 tháng 8Duyệt lãm.
  7. ^ISO/IEC 9899:1999 - Programming Languages -- C”.2012 năm ngày 24 tháng 6Duyệt lãm.
  8. ^ISO/IEC 9899:2011/Cor 1:2012”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  9. ^C の lịch sử - cppreference
  10. ^ISO/IEC TR 19769:2004”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  11. ^ISO/IEC TR 24731-1:2007”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  12. ^ISO/IEC TR 18037:2008”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  13. ^ISO/IEC TR 24732:2009”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  14. ^ISO/IEC TR 24747:2009”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  15. ^ISO/IEC TR 24731-2:2010”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  16. ^ISO/IEC TS 17961:2013”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  17. ^ISO/IEC TS 18661-1:2014”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  18. ^ISO/IEC TS 18661-2:2015”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  19. ^ISO/IEC TS 18661-3:2015”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  20. ^ISO/IEC TS 18661-4:2015”.International Organization for Standardization.2017 năm ngày 1 tháng 8Duyệt lãm.
  21. ^See a list athttp://en.cppreference /w/c/experimentalVisited 16 January 2016.
  22. ^HP C/ANSI C developer's bundle”.2015 năm ngày 12 tháng 7Duyệt lãm.
  23. ^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.