書籍購入:『C言語プログラミング入門 C99対応』

故あってC99以降に対応したC言語の入門書を探している。自習用として問題なさそうなやつ。あと、プログラミング初心者向けの冗長な内容ではなく、プログラミング経験者でも読み進めやすい簡潔な内容のもの。

……うーん、良さそうに感じたけど、やっぱりアカンかあ。ちょいちょい微妙な部分があるぞ。

ちょっと見た範囲で、不味そうな部分:

  • 「1.7 プログラム中のコメント」に以下の記載があるが、そんなはずはない。

ただし,厳密なC99の規格では "//" でコメントを書くとエラーになるようである。

  • 「8.1.2 外部変数 (extern)」に以下のような記載があり、ぱっと見で「外部変数(グローバル変数)を使う際に、各関数内でextern宣言すること」を推奨しているように読めるが、そのようなスタイルは一般的ではない。どちらかと言えば、規模が大きなプログラムや、複数人数での開発においては、極力「外部変数を直接参照する手法」を排したスタイルで設計・実装するべきだろう。

外部変数は,上の例のようにプログラムの先頭で宣言するだけでなく,各関数の中でもextern文を用いた使用宣言をするのが正式の使用方法であるが,実際には外部変数をプログラムの先頭で宣言するだけで,extern文による使用宣言は省略することが一般的である。しかし,プログラムサイズが大きくなったときや,何人かで協力してプログラムを作る場合などは,各関数の中でextern文による使用宣言をしておくほうが失敗が少ないと思われる。

  • 「8.1.3 静的変数 (static)」で扱っているのが「関数内のstatic変数」だけで、staticを付与した外部変数(≒ファイルスコープ変数)についての記載がない。ついでに言えば、staticを付与した関数(ファイルスコープの関数)についての記載もない。

自習用としては難あり、かなあ? チューターがいるなら別かもしれない