はじめに
ここではプログラムの分割方法について説明します。開発速度を上げるために重要な知識の1つです。
※このページで紹介する内容はあくまでも一例です。個別の作成のご相談ご質問はお答えできませんのでご了承下さい。このページと同じ内容についてのご質問についてはロボット掲示板にてお願いいたします。
※以下の情報は2007年12月現在のものです。ご注意ください。
※このページではC言語の基本的な部分を理解している方向けに書いてあります。また、何回かMPLABの操作を行った方を対象にしています。それ以外の方はまず基本編を読んで下さい。
プログラムの分割
<ファイル分割の必要性>
基本編で説明した程度のプログラムでは問題ありませんが、プログラムが長くなってくると、1つのファイルにソースプログラムを書いたのでは非常に見づらくなります。また、プロジェクトが違っても、毎回同じプログラムというのも多くあります。ソースプログラムを複数のファイルに分割できれば管理がしやすくなります。
<分割の例>
ファイルを分割するには、単純にソースファイルを2つ以上作ってプログラムを分割し、プロジェクトに追加します。
下は、基本編で作ったプロジェクトのファイルを2つの分割したところです。Arithmetic_2.cという新規ファイルを作って、main以外の関数を写しました。プロジェクトウィンドウには2つめのソースファイルが登録されています。
<ヘッダファイル>
上の例のArithmetic_2.cを見ると、先頭1行目に、ヘッダファイルがインクルードされています。このように分割したファイルでも、そのファイル内で使っている機能に必要なヘッダファイルをインクルードする必要があります。(p33FJ256710.hは必ず必要)
<グローバル変数>
上の例のArithmetic_2.cを見ると、6行目に extern int cnt; というのがあります。ブローバル変数は全ての関数で使える変数ですが、ファイルを分割した場合は、別なファイルでその変数が宣言されている旨を宣言する必要があります。このとき、例のように変数宣言の前に
extern をつけます。実際のint型変数cntの宣言 int cnt; はArithmetic.cのソースファイルの方で宣言しています。
<関数のプロトタイプ宣言>
Cの仕様では、関数を記述する前に、関数の戻り値と引数を宣言する「プロトタイプ宣言」を行うようになっています。これは、コンパイラが関数の呼び出しを正しく処理するためのものらしいですが、実際には無くても動きます(筆者経験上の話。)。しかし、Microchip社のプログラミング例を見ると、ファイル分割した場合は、分割した方のファイルで、冒頭にプロトタイプ宣言がされていますので、一応、その作法に従ったほうがよいでしょう。(行3〜4の部分)
2007年12月1日
|