C」の、ANSIって?C言語を語るとき、枕詞のように出てくる言葉が、ANSIという言葉です。C」などと言ったりしますが、そもそもこのANSIとは何なのでしょうか。これは、アメリカ合衆国における工業規格の標準化を行う機関です。(JISC)のようなもので、日本におけるJIS規格のようなものが、アメリカのANSI規格だと思えばいいでしょう。その世界への影響力は、JISCの比ではありません。Commission:国際電気標準会議)の標準となることも多く、様々な分野で世界的な影響力を持っています。K&RからANSI-CへC言語は1989年、このANSIによって言語仕様の規格化が行われ、これは「ANSI-C」あるいは「C89」と呼ばれています。Kernighanが著したいわゆる「K&R本」を基に多くの処理系の実装が行われていましたが、そののち、このANSI規格が標準となりました。そのため、K&R本もANSI-Cに合わせて改訂され、第2版が出版されました。C言語の仕様はこの後、10年間変化しませんでした。これはこの時作られたANSI-Cが完成度の高いものだったということが言えるでしょう。C95規格に...といった形で標準化されてきました。JISとC言語このように国際規格となったANSI-Cですが、日本でこのC言語の標準規格を管理・公開しているのが、JISCです。基礎として制定されています。現在、この企画は、ホームページ上で公開されており、だれでも簡単に閲覧することが可能です。C言語の規格書として日本語で書かれたものは、おそらくこれが唯一のものなのではないでしょうか。独自に拡張されるC言語このように、ANSIによって標準規格がさだれられているC言語ですが、実際に利用されているC言語のコンパイラは、この標準規格と全く同じかというと必ずしもそうではありません。C99に対応していますが、独自に拡張されている部分があります。マイクロソフトのVisualC++コンパイラも、ANSI規格以外の機能を多数用意しています。Microsoft拡張機能として知られています。マイクロソフトでは、こういった拡張機能の仕様を、ホームページで公開しています。アップル社も、ブロック(Blocks)などのように、独自にC/C++/Objective-C言語の拡張を行い、ラムダ式風の構文を用いてクロージャを作成する機能を提供しています。C言語でプログラミングする際のマナーこのように、C言語は様々な事情をもとに、独自に拡張や機能追加がなされています。標準であるはずのC言語でプログラムを作ったにもかかわらず、Aというコンパイラではコンパイルでき、Bというコンパイラではできない...という可能性もあります。そのため、C言語でプログラムを作成する場合、特定のOSや処理系に依存しないクロスプラットフォーム開発をししなくてはならない場面が少なからずありますが、そういった場合、こういったC言語のコンパイラごとの違いに留意し、なるべく標準規格に準じたプログラミングをするように心がける必要があります。