読者です 読者をやめる 読者になる 読者になる

Cのauto

Unix考古学を読んでいて、ちょっと面白い記述を見つけた。

たとえば、Dennis Ritchieのコンパイラは、局所的な自動変数をautoという型で定義したり、あるいは変数定義を省略することを許していましたが、型を明確に宣言するという今日のスタイルに変更されました。

Unix考古学 Truth of the Legend

Unix考古学 Truth of the Legend

これだけを読むと、

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 be auto.

なんのことはない、型を省略するとintになるのだった。関数宣言が見つからないときとかそうだった気がするので、まあ一貫性がある。

*1:Wikipediaによる

*2:多相型も関数もないので、全然制限されているけど

*3:1975年のものと書いてある