今回は、かなり大きなプログラムを作るときの問題点を中心に話を進めます。今までは、単にC
の関数のコーディングの汚さが中心でしたが、今回は、もっと大きく、深刻な、「構造的欠陥」を
紹介します。
大きなプログラムになると、プログラム全体で次のようなものを共通に使いたくなるでしょう。
- (a) マクロ
- (b) 型宣言
- (c) グローバル変数
- (d) グローバル関数宣言
これらを、別々のコンパイル単位になる .c ファイルの先頭で#includeで読み込みます。すると、
別々のファイルで、型とかグローバル変数が共通化できます。だから、複数人で開発するときには
ヘッダーファイル(インクルードファイル)の使用は欠かせません。しかし、全体で共通に使うた
め、この部分にバグが入ると、バグの作用がプログラム全体に一瞬にして及び、極めて深刻な事態
になります。意味不明のバグに悩まされる原因が、ヘッダーファイル中に存在することがしばしば
あります。
今回のプログラムは、主に、私が仕事上などで、バグ探しを無理矢理させられて見つけたものが
中心です。しかし、いずれも少なくとも数万行以上の大きなプログラムなので、ここに全容どころ
か、ヘッダーファイルの一部しか掲載できません。
|