Cのauto
Unix考古学を読んでいて、ちょっと面白い記述を見つけた。
たとえば、Dennis Ritchieのコンパイラは、局所的な自動変数を
auto
という型で定義したり、あるいは変数定義を省略することを許していましたが、型を明確に宣言するという今日のスタイルに変更されました。
- 作者: 藤田昭人
- 出版社/メーカー: KADOKAWA
- 発売日: 2016/04/28
- メディア: 単行本
- この商品を含むブログ (3件) を見る
これだけを読むと、
auto count;
のような宣言が許されていたように思える。
これってもしかして、C++っていう言語が2011年に獲得した機能のことでは……???これ多分1970年代の頭の話なので、MLができたのが1973年で型推論アルゴリズムが1969年とかで*1、その前後にCには型推論があったってことか*2。すごいな!
そんなことはない
検索したら当時のCのマニュアルっぽいものが見つかったので読んでみた*3。
In a declaration inside a function, if a storage class but no type is given, the identifier is assumed to be
int
; if a type but no storage class is indicated, the identifier is assumed to beauto
.
なんのことはない、型を省略するとint
になるのだった。関数宣言が見つからないときとかそうだった気がするので、まあ一貫性がある。