ANSI-Cとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > ANSI-Cの意味・解説 

ANSI C

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/05 10:25 UTC 版)

ナビゲーションに移動 検索に移動

ANSI CISO C、または標準Cとは、米国規格協会 (ANSI) および国際標準化機構 (ISO) が発行したC言語の標準の総称である。歴史的にこれらの名前は特に、オリジナルであり、最もサポートされているバージョンであるC89およびC90のことを指す。C言語でプログラムを作成するソフトウェア開発者は、コンパイラ間の移植性のために、標準に準拠することが推奨される。

歴史と概要

Cの最初の標準はANSIによって発行された。この文書は後にISOによって採択され、ISOによって公表されたその後の改訂版もANSIによって採択されているが、「ISO C」ではなく「ANSI C」という名称がより広く使用されている。一部のソフトウェア開発者は「ISO C」という用語を使用しているが、他のソフトウェア開発者は発行組織に中立的な「標準C」という用語を使用している。

C89

1983年、ANSIがC言語の標準仕様を確立するための委員会・X3J11を設立した。この規格は1989年に完成し、ANSI X3.159-1989「プログラミング言語C」として採択された。このバージョンは、しばしば「ANSI C」と呼ばれる。その後、C99が発表されてからは、それ以前のバージョンについても同様の命名法で呼ばれるようになり、このバージョンは「C89」とも呼ばれるようになった。

C90

C89のフォーマットを変更しただけ[1]の標準が、ISOによってISO/IEC 9899:1990として採択された。この標準はC90と呼ばれることがある。C89とC90は本質的には同じ言語である。

この標準は後に、ANSI/INCITS[2]、ISO/IEC[3]の双方によって撤回されている。

C95

1995年、ISOはANSI-C標準の拡張、Amendment 1を発行した。正式名称はISO/IEC 9899/AMD1:1995であり、C95というニックネームを付けた。誤りの訂正の他、以下のような言語の能力のさらなる変更があった[4][5]

この改訂に加えて、2つのC90の正誤表がISOによって発行された。

  • ISO/IEC 9899 TCOR1(1995年)
  • ISO/IEC 9899 TCOR2(1996年)

C95互換性を確認するプリプロセッサテスト

#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L

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

C99

2000年3月、ANSIはISO/IEC 9899:1999を採択した。この規格は、一般に「C99」と呼ばれている。この標準での注目すべき追加点は、以下の通りである。

  • 新しい組み込みデータ型: long long_Bool_Complex_Imaginary

静的配列インデックス、指定初期化子、複合リテラル、可変長配列フレキシブル配列メンバ英語版、可変長マクロ、restrict英語版キーワードなどの、新しいコア言語機能

  • stdint.htgmath.hfenv.h, complex.h などの新しいライブラリヘッダ
  • インライン関数、一行コメント、宣言とコードのミックス、ユニバーサルキャラクタ名などの、C++機能との互換性の向上
  • 暗黙的な関数宣言や暗黙の int など、いくつかの危険なC89言語機能を削除

3つのC99の正誤表がISOによって発行された。

  • ISO/IEC 9899:1999/Cor.1:2001(E)
  • ISO/IEC 9899:1999/Cor.2:2004(E)
  • ISO/IEC 9899:1999/Cor.3:2007(E) - 標準ライブラリ関数 gets を非推奨とした

この規格は、後述のC11のリリースをもって、???[誰?][6]とISO/IEC[7]の双方によって廃止された。

C11

2011年12月8日にISO/IEC 9899:2011(通称 C11)として改訂された。このバージョンで導入された注目すべき機能には、改良されたUnicode対応、新しい _Generic キーワードを使用するタイプジェネリック式、クロスプラットフォームのマルチスレッドAPI (<threads.h>)、コア言語とライブラリ (<stdatomic.h>) の両方でのアトミック型対応がある。

1つのC11の正誤表がISOによって発行された。

  • ISO/IEC 9899:2011/Cor 1:2012[8]

C17

2018年にISO/IEC 9899:2018(通称C17またはC18)として改訂された。仕様の欠陥修正がメインのマイナーアップデートである[9]

その他の関連するISO発行物

ISOは、標準化プロセスの一環として、C言語に関連する技術レポート (technical report) と仕様書 (specification) も公開している。

  • ISO/IEC TR 19769:2004[10] - Unicode変換フォーマットに対応するライブラリ拡張について。C11に統合
  • ISO/IEC TR 24731-1:2007[11] - 境界チェックされたインタフェースに対応するライブラリ拡張について。C11に統合
  • ISO/IEC TR 18037:2008[12] - 組み込みプロセッサをサポートするためのC拡張について
  • ISO/IEC TR 24732:2009[13] - ISO/IEC TS 18661-2:2015に代わる十進浮動小数点英語版演算について
  • ISO/IEC TR 24747:2009[14] - 特殊な数学関数について
  • ISO/IEC TR 24731-2:2010[15] - 動的割り当て機能に対応するライブラリ拡張について
  • ISO/IEC TS 17961:2013[16] - Cの安全なコーディングについて
  • ISO/IEC TS 18661-1:2014[17] - IEC 60559:2011に準拠した二進浮動小数点演算
  • ISO/IEC TS 18661-2:2015[18] - IEC 60559:2011と互換性のある十進浮動小数点演算
  • ISO/IEC TS 18661-3:2015[19] - IEC 60559:2011互換のインターチェンジおよび拡張浮動小数点型
  • ISO/IEC TS 18661-4:2015[20] - IEC 60559:2011に準拠した補助機能

TS 18661の5番目と最後の部分、ソフトウェアトランザクショナルメモリ仕様、ライブラリ拡張などの多くの技術仕様が開発中で承認待ちである[21]

主要なコンパイラによる対応

ANSI Cは現在広く使用されているほとんどのコンパイラが対応している。現時点で書かれているC言語のソースコードのほとんどは、ANSI Cをベースにしている。標準Cで書かれ、ハードウェアに依存する仮定を持たないプログラムは、準拠したC実装のプラットフォームで正しくコンパイルされることが保証されている。このような予防措置を講じないと、ほとんどのプログラムはGUIライブラリなどの非標準ライブラリの使用やコンパイラ固有の属性やプラットフォーム固有の属性の使用などにより、特定のプラットフォームまたは特定のコンパイラでしかコンパイルされないことになる(特定のデータ型の正確なサイズやエンディアンなど)。

K&R CとANSI Cの違いを緩和するために、__STDC__ マクロを使用してコードをANSIセクションとK&Rセクションに分割することができる。

 #if defined(__STDC__) && __STDC__
 extern int getopt(int, char * const *, const char *);
 #else
 extern int getopt();
 #endif

ANSI Cに対応するコンパイラ

関連項目

脚注

  1. ^ Standards - Using the GNU Compiler Collection (GCC)”. 2012年6月24日閲覧。
  2. ^ http://www.techstreet.com/cgi-bin/detail?doc_no=incits_iso_iec%7C9899;product_id=232462
  3. ^ ISO/IEC 9899:1990 - Programming Languages -- C”. 2012年6月24日閲覧。
  4. ^ Clive D.W. Feather (2010年9月12日). “A brief description of Normative Addendum 1”. 2017年8月1日閲覧。
  5. ^ ISO/IEC 9899:1990/Amd 1:1995”. International Organization for Standardization (2013年3月22日). 2017年8月1日閲覧。
  6. ^ INCITS/ISO/IEC 9899-2012”. ANSI. 2017年8月1日閲覧。
  7. ^ ISO/IEC 9899:1999 - Programming Languages -- C”. 2012年6月24日閲覧。
  8. ^ ISO/IEC 9899:2011/Cor 1:2012”. International Organization for Standardization. 2017年8月1日閲覧。
  9. ^ C の歴史 - cppreference.com
  10. ^ ISO/IEC TR 19769:2004”. International Organization for Standardization. 2017年8月1日閲覧。
  11. ^ ISO/IEC TR 24731-1:2007”. International Organization for Standardization. 2017年8月1日閲覧。
  12. ^ ISO/IEC TR 18037:2008”. International Organization for Standardization. 2017年8月1日閲覧。
  13. ^ ISO/IEC TR 24732:2009”. International Organization for Standardization. 2017年8月1日閲覧。
  14. ^ ISO/IEC TR 24747:2009”. International Organization for Standardization. 2017年8月1日閲覧。
  15. ^ ISO/IEC TR 24731-2:2010”. International Organization for Standardization. 2017年8月1日閲覧。
  16. ^ ISO/IEC TS 17961:2013”. International Organization for Standardization. 2017年8月1日閲覧。
  17. ^ ISO/IEC TS 18661-1:2014”. International Organization for Standardization. 2017年8月1日閲覧。
  18. ^ ISO/IEC TS 18661-2:2015”. International Organization for Standardization. 2017年8月1日閲覧。
  19. ^ ISO/IEC TS 18661-3:2015”. International Organization for Standardization. 2017年8月1日閲覧。
  20. ^ ISO/IEC TS 18661-4:2015”. International Organization for Standardization. 2017年8月1日閲覧。
  21. ^ See a list at http://en.cppreference.com/w/c/experimental Visited 16 January 2016.
  22. ^ HP C/ANSI C developer's bundle”. 2015年7月12日閲覧。
  23. ^ Support for ISO C11 added to IBM XL C/C++ compilers

外部リンク


「ANSI C」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ANSI-C」の関連用語

ANSI-Cのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ANSI-Cのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのANSI C (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS