まさかの ANSI C 非対応

現在やっているお仕事の中で、「ホスト側」と呼ばれるコンピュータは、Linux (RHEL) とか 某UNIX とかをサポートしなければならない Cの開発だったのですが、Linux でMakeと動作の確認しながら開発していたものを、さあ 某UNIX で試そうぜ!……となった時点で、その環境がまさかの ANSI C に対応していないという状況が判明し 現場に戦慄が走ったのでした。

「そんなの聞いてないよ!」という理不尽さと、「で、K&R C ってANSI Cと何が違うんだっけ?(大まかにじゃなくて正確な所はどうなんだ? 何見ればいいの?)」という今後の対応への頼りなさとで、いてつく現場。

例えるなら、昔の日本にタイムスリップして、その時代の人のフリをする任務で、うっかりその時代にない単語を使ったらアウトみたいな緊張感。

そういえば、昔そんな会話を Matz日記で見たなぁと。

_ まつもと (2005-07-12 08:20)
K&Rってそんなに違うの? 解説書がいるほど?

すくなくともRubyの使ってる範囲内では関数の引数宣言形式が少々違うだけです。それを「解説書がないから」と思ってしまうのは、「私の世代では」とかいう問題ではないと思います。私(たち)が年寄りなのは認めますけどね。

http://www.rubyist.net/~matz/20050709.html#c06

この会話をリアルタイムで読んでいた頃は「K&R を怖がるなんて甘え」的なマッチョ思考をしていたのですが、いざ当事者になると、欲しいと思っちゃいます、解説書。

何が許されてなにが許されないのかという「正解」がほしいな、というのと、どういう落とし穴があるのかというノウレッジも欲しいです。そういう意味ではどちらかというと「解説書」じゃなくって「言語仕様」が欲しいのかも。古い 「プログラミング言語C」を探し出さなきゃですね。

目につく違いは 関数定義の引数の宣言方式が違うとか、より本質的なところは 引数はなんでもint幅 で渡す(char や float, short int は 一度「広げられて」から、関数の内側で「狭められて」キャストされる)ですとか位だよね、というのがあたしの理解ですが、この足元がおぼつかないような、漠然とした不安感はなになしら。

平均台を歩くのは簡単だけれども、平均台の下が崖だととても渡れない・・のと似たようなものかなぁと、なんとなく感じたり。

残念ながら この事案は わたしとはニアミスで、直接対応できるわけじゃないのがちょっとさみしいです。もう21世紀も10年すぎて、なかなか出会えないレア案件かな、と思うので、このチャンスにちょっとやってみたかったです。