Help us understand the problem. What is going on with this article?

Ancient C探訪記:キーワード編

More than 1 year has passed since last update.

おことわり: この記事では「1975年頃のC言語」仕様を解説します。2017年現在のC言語仕様とは異なるため、あなたのC言語ライフには役立たないことを予めご承知おきください。

(本投稿は Ancient C探訪記 シリーズの一部です。)


Ancient Cのキーワード

"C Reference Manual" §2.3 Keywords より一覧を引用します。今日でもお馴染みのキーワードが並んでいるかと思います:

The following identifiers are reserved for use as keywords, and may not be used otherwise:

int         break
char        continue
float       if
double      else
struct      for
auto        do
extern      while
register    switch
static      case
goto        default
return      entry


リストをよく見ると、一つだけ entry という見慣れないキーワードが混じっています。

The entry keyword is not currently implemented by any compiler but is reserved for future use.

Ancient C時点でも実装は存在せず “将来のために予約” となっていました。StackOverflowでの回答によると、entryは “関数に対して複数のエントリポイントを定義可能とする” ためのキーワードだったようです。

Q: What was the entry keyword mentioned in K&R1?
A: It was reserved to allow functions with multiple, differently-named entry points, but it has been withdrawn.

少々意味を取りづらいですが、return文を用いて関数からの出口を複数記述できるように、ある関数への複数の入り口(entry point)を記述できるようにしたかったのでしょう。SUGEE。

同キーワードはANSI C以降の標準規格には存在しませんから、結局そのままお蔵入りしたようです。当時のCコンパイラでも未実装に終わった様子ですし、構造化プログラミングという観点からもさすがに柔軟性が高すぎると判断されたのでしょう。


次は Ancient C 時点では定義されておらず、標準規格(ANSI C、C90)に存在するキーワードを列挙します:

  • unsigned
  • signed
  • short
  • long
  • void
  • const
  • volatile
  • typedef
  • enum
  • union



Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away