LoginSignup
8
1

More than 1 year has passed since last update.

[C言語] K&R、ANSIとは

Last updated at Posted at 2022-05-13

K&R C

K&R自体はプログラミング言語Cという、Brian KernighanとDennis Ritchieによって書かれたC言語についての書籍の初版を指す様。(つまり、C言語の一番最初のときのこと)
その書籍で提唱されたC言語がK&R C

K&R Cでの関数の例は以下。

K&Rの例
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で書くと以下のようになる。

ANSI Cの例
int area(int width, int height)
{
  return width * height;
}

K&R CANSI Cの違いについては、
付録 G K&R Sun C と Sun ANSI C の違い (C ユーザーズガイド)
を参照。(K&R Sun CSun 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

8
1
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1