ものづくりBLOG blog page

第10章 インクルードファイル

2011-01-01 (Sat) 10:00
H8+C言語入門:第10章 インクルードファイル
 
 第10章では、インクルードファイルの話しをしましょう。
 よくプログラムの先頭に
  #include <stdio.h>
 とか、ものづくりの大会でよく使うのは、
  #include "3048f.h"
 などの表記があります。
 
 配置としては、最初の行によく書かれています。
 これをインクルード(ファイル)といいます。
 コンパイル作業は、大まかに見ると「プリプロセッサ」と「コンパイラ」という処理で行
 われています。「プリプロセッサ」は、この「#include」という文字を見つけると、指定
 されたファイル(つまりここでは、stdio.h とか、3048.h というファイル)をこの位置に
 読んで追加(挿入)します。
 
 インクルードファイルは、
  ・コンパイラをインストールした時に、どこかに作られた(はず)、
  ・自分で作成した、
 ものに分けられます。
 コンパイラをインストールされた時に、どこかに作られたものは、マニュアルやヘルプを
 探してみてください。ここに格納されていますよというフォルダーが紹介されていると思
 います。
 自分で作成したインクルードファイルは、コンパイラや開発環境(ここでは、HEW)が指定
 するフォルダーに保存するか、自分で保存した先のフォルダーを指定することができる様
 になっています。
 
 インクルードファイルは、別名、ヘッダファイルとも呼ばれます。
 拡張子が .h となっていますし、こちらの名前がしっくりくるかもしれませんね。
 この行の先頭に #include というのがついているので、そこからインクルードファイルと
 呼ばれているのですが、いずれでもよいです。自分の呼びやすい名称で覚えましょう。
 但し、他の人が自分とは違う呼び名を使っても混乱しないように注意しましょうね。
 ここでは、以下、ヘッダファイルとします。
 
 通常、記号<>で囲まれたファイルは、コンパイラや開発環境が標準に用意しているヘッ
 ダファイルのフォルダーにあることを示しております。他方、記号""で囲まれたファイル
 は、自分で保存先を指定したフォルダーにある(はず)ことを示します。
 ファイルが存在しないと、コンパイル処理の際、エラーとなって表示されます。
 
 H8のプログラミングでよく使うヘッダファイルに 3048f.h があります。
 目的は、H8の入出力ポートをプログラムからアクセスするために、実際は、指定された
 アドレスを指定する必要があるが、それでは何が何だか分からないので、分かりやすい記
 号化した名前を使い、#define を使って実際のアドレスを定義しておくというやり方をし
 ます。その #define を集めたものが 3048f.h であると理解してもいいと思います。
 さまざまな関数などの宣言や定義(変数、記号文字定数など)がされているファイルという
 ことですね。
 3048f.h の内容は、テキストエディタ(メモ帳など)で開くことができますから、興味があ
 りましたら、自分で内容を見てみてください。あー!なるほど!ってことになりますよ。
 
 3048f.h が、各入出力アドレスを入出力の名前にまとめたものです。
 このファイルをインクルードすることにより、前述のような宣言をいちいち書く必要はあ
 りません。各入出力名は、3048f.h をご覧いただくとして、C言語のソースコードでの書
 き方の例を次に示します。
 
#include "3048f.h" //3048f.hをインクルードする。
 
void main(void){
P1.DDR = 0xff; //ポート1のコマンドアドレスに0xffをセットし、出力に初期設定する。
P1.DR.BYTE = i; //ポート1にiの内容を出力する(バイトアクセス例)。
P1.DR.BIT.B1 = 1; //ポート1のビット1を1にする(ビットアクセス例)。
}
 
 これは、プログラミングをする際、毎回同じ様なことを書く−各ソースファイル毎に同じ
 定義や宣言をしたい時の為に、(いわば)楽をするために作られた仕組みであるということ
 ができますね。毎回必ず同じことを書かなければならないことがあるのならば、それを1
 つのファイルにまとめて、使う時に #include で始まる1行を書くだけで、お終いとなる
 ようにしようと いうことですね。ヘッダファイルの中身を見てみると、その理由が分かり
 ますよ。こんな面倒なものを毎回書くのはやはり面倒だし−というようにね。
 でも、コピペでもいいんじゃない、という方もいらっしゃると思いますが、同じ内容だけ
 ど、各ソースファイルに書き込んで、そのソースファイルの数が2、3個程度であれば、
 その部分の修正も何とか全てを同じに保つことができるでしょうが、もっと数が多くなる
 と、その管理も面倒になり、修正漏れが出てきたりすると、それが原因でバグとなったり、
 或いは、動作不良となったり、或いはコンパイルできない、などのような困ったことが出
 てきます。そんなことを回避する先人の知恵(=C言語の仕様)なんでしょうね。
 
 
−まとめ−
 1.#includeは、指定されたファイルをその位置に読み込みます。

この記事を表示

第9章 何もしない(8):関数

2011-01-01 (Sat) 09:00
H8+C言語入門:第9章何もしない(8):関数 第9章でも、何もしないプログラムを作成します。ひたすら・・この章で何もしないプログラムを作成するのは、終わりです。第2章では、main関数の書...
記事全文を読む

第8章 何もしない(7):制御文−switch文

2011-01-01 (Sat) 08:00
H8+C言語入門:第8章何もしない(7):制御文−switch文 第8章でも、やはり何もしないプログラムの作成が続きます。第7章では、一つの評価の結果から二つの選択をするというも...
記事全文を読む

第7章 何もしない(6):制御文−if文

2011-01-01 (Sat) 07:00
H8+C言語入門:第7章何もしない(6):制御文−if文 第7章でも、まだまだ何もしないプログラムの作成が続きます。第5章、第6章では、繰り返し処理の制御文を学習しました。第7章...
記事全文を読む

第6章 何もしない(5):制御文−for文

2011-01-01 (Sat) 06:00
H8+C言語入門:第6章何もしない(5):制御文−for文 第6章でも、更に懲りずに何もしないプログラムを作成します。第5章で制御文の一つであるwhile文、do〜while文を...
記事全文を読む

第5章 何もしない(4):制御文−while文

2011-01-01 (Sat) 05:00
H8+C言語入門:第5章何もしない(4):制御文−while文 第5章でも、懲りずに何もしないプログラムを作成します。これまでは、上から下へ向かって処理をする、単純なものでした。...
記事全文を読む

第4章 何もしない(3):式−型変換−

2011-01-01 (Sat) 04:02
H8+C言語入門:第4章何もしない(3):式−型変換− 第4章の式について、補足をします。式を処理する時、変数や定数の型について、注意を払う必要があります。式(文)に...
記事全文を読む

第4章 何もしない(3):式−演算子−

2011-01-01 (Sat) 04:01
H8+C言語入門:第4章何もしない(3):式−演算子− 第4章の式について、補足をします。式は、変数や定数を組み合わせたものです。数学や算数の式と同じです。そこでは演...
記事全文を読む

第4章 何もしない(3):式

2011-01-01 (Sat) 04:00
H8+C言語入門:第4章何もしない(3):式 第4章でも、何もしないプログラムを作成します。そろそろ何もしないプログラムばかりなので、飽きてきましたか?もう少し、何もしないプログラムを続けま...
記事全文を読む

第3章 何もしない(2):変数−記号文字定数−

2011-01-01 (Sat) 03:03
H8+C言語入門:第3章何もしない(2):変数−記号文字定数−−文法(概要)− 「記号文字定数」について説明します。「記号定数」ともいいます。...
記事全文を読む

ものづくりBLOG

Blog Category

Blog Calendar

RSS 2.0