K&R C
K&R自体はプログラミング言語Cという、Brian KernighanとDennis Ritchieによって書かれたC言語についての書籍の初版を指す様。(つまり、C言語の一番最初のときのこと)
その書籍で提唱されたC言語がK&R C。
K&R Cでの関数の例は以下。
area(width, height)
int width;
int height;
{
return width * height;
}
また、K&Rスタイルは字下げスタイルのことで、他にもいくつかある様。(上記のコード)
→ 字下げスタイル - Wikipedia
K&RではC言語の公式な標準が定められておらず、その後、ANSIでの標準化がされたものがANSI C。
ANSI C
ANSI、ISOが発行したC言語の標準のこと。
C言語には以下のようにバージョンがあり、
- C89
- C90
- C95
- C99
- C11
- C17
単にANSI Cという場合はC89, C90を指す。
K&Rで書いた関数の例をANSI Cで書くと以下のようになる。
int area(int width, int height)
{
return width * height;
}
K&R CとANSI Cの違いについては、
付録 G K&R Sun C と Sun ANSI C の違い (C ユーザーズガイド)
を参照。(K&R Sun CとSun ANSI Cなので、SunのCコンパイラでの場合の違い)
gccでは-ansi, -pedanticオプションをつけることで、ANSIと互換性のないGCCの機能は無効になる。ただし、仕様に従っていないコードに対してすべて警告が出るわけではない様。
(Warning Options (Using the GNU Compiler Collection (GCC))の-Wpedantic -pedanticを参照)
$ gcc -Og -Wall -ansi -pedantic -o main main.c
Ref
- プログラミング言語C - Wikipedia
- ANSI C - Wikipedia
- O'Reilly Japan - C実践プログラミング 第3版
- 付録 G K&R Sun C と Sun ANSI C の違い (C ユーザーズガイド)
- 字下げスタイル - Wikipedia
- C Dialect Options (Using the GNU Compiler Collection (GCC))
- Warning Options (Using the GNU Compiler Collection (GCC))
- 日記/2010/01/06/プロトタイプ宣言の引数型の格上げとかK&Rとか、 gccの"-traditional", "-ansi", "-pedantic"オプションとか。 - Glamenv-Septzen.net
- C言語関係
- C言語 - Wikipedia
- C (programming language) - Wikipedia