next up previous contents
Next: 1. プリプロセッサ Up: 22. 記憶クラスとモジュール Previous: 22. 記憶クラスとモジュール

1. モジュール

先に述べたように、C言語には効率的なプログラム開発を行うために必要な モジュールという概念が備わっている。C言語について一番最初に学んだ ように、プログラムは機械語に翻訳された後に、必要なライブラリなど とリンクされることによって実行可能な形式になる。これらの過程は、 厳密には前者がコンパイルと呼ばれ、後者がリンクと呼ばれているが、 リンク自体はライブラリのリンクに限らず、開発者が自由に行う事ができる ようになっている。つまり、開発者がプログラムを分割して、個別に コンパイルし、できたオブジェクトをリンクすることも可能なのである。 こうした開発方法は、全てのプログラムを少し変更する度に全てをコンパイル し直さなくても良いようにしてくれると同時に、何度も使うオブジェクト の再利用も可能にしてくれる(実はライブラリはオブジェクトを一つの ファイルにまとめたものである)。

このようにプログラムを分割して開発することは非常に便利な面がある のだが、一方注意すべき問題もある。それは、分割されたプログラムの 断片(モジュールと言う)の 間の情報はどのようにして共有されるのかという問題である。これまでに 学んで来たようにプログラム上の情報とは2つの要素に分けられ、一つは 変数名であり、今一つは関数名である。実は、後者の問題に対する回答 は単純で、関数名は全てのプログラム中でいわばグローバルであるので、 名前自体は分割しても問題はない。しかし、関数の型や引数などの情報 についてはそうではない。これに対しては我々は関数宣言という方法を 学んだので問題の大部分は既に解決していて、残る問題は関数宣言をどの ようにして異なるモジュール間で共有するのかという点についてのみである。 今一つの主要な問題は変数名に関する問題であるが、これについては次の 節で扱う。





Noriyo Kanayama 平成14年11月26日