C言語

C89

そこで、ISOANSIは協同でCの規格の標準化を進め、1989年12月にANSIのANSI X3.159-1989, American National Standard for Information Systems -Programming Language-C が、1990年12月にISOの INTERNATIONAL STANDARD ISO/IEC 9899 : 1990(E) Programming Languages-C が発行された。ISO規格のほうが章立てが追加されており、その後ANSIもISO規格にならって章立てを追加した。それぞれ C89(ANSI C89)及びISO C90 という通称で呼ばれることがある。日本では、これを翻訳したものが日本工業規格『JIS X3010-1993 プログラム言語C』として、1993年10月に制定された。最大の特徴は、C++と同様の関数プロトタイプを導入して引数の型チェックを強化したことと、voidやenumなどの新しい型を導入したことである。一方、処理系に依存するとするに留めた部分も幾つかある(int型のビット幅、char型の符号、ビットフィールドエンディアン、シフト演算の挙動、構造体などへのパディング、等)。また、型の大きさは厳密に決められてはおらず、バイト数はsizeof演算子で取得し、最大最小値はlimits.hで参照することとされている。もっとも、多くの処理系ではchar型は8ビット、short型は16ビット、long型は32ビットである。またAPIなどの呼び出しには、ヘッダでBYTEやWORDなどとtypedefした型を使用して回避するのが一般的になっている。char型以外で符号を明示しない場合はsignedになる。規格上には、コメントのネストや、BCPL・C++タイプの一行コメント(//)は無いが、オプションでサポートした処理系も多い。GNU C コンパイラを使って、C89規格に準拠したコンパイリングを行うことができ、下記のようにオプションを指定すれば良い。
$ gcc -ansi -pedantic -Wall -Wextra -Wstrict-prototypes \
 -Wmissing-prototypes -Wmissing-declarations \
 -fstrict-aliasing -Werror  my_program.c

戻る