H8+C言語入門:第9章 何もしない(8):関数
第9章でも、何もしないプログラムを作成します。
ひたすら・・この章で何もしないプログラムを作成するのは、終わりです。
第2章では、main関数の書き方を示しました。第9章では、C言語の特長である構造化プロ
グラミングから、プログラムの処理を関数という単位に分けてみます。
<サンプル9-1>
void main(void)
{
func(void);
}
void func(void)
{
;
}
これをコンパイルして、H8へロードし、動かしても何も動きません。
このプログラムはコンパイルできる最少のコードで構成しています。
まず、funcは、関数名です。
先の説明と同じですが、コンパイラは最初にmain関数を探して、コンパイルします。
でも、その時にfunc関数がないので、コンパイラは警告を出すかもしれません。
<サンプル9-2>
void func(void)
{
;
}
void main(void)
{
func();
}
もし、サンプル9-1でコンパイルする時、警告が出ていたとしたら、サンプル9-2という
記述で、その警告がなくなるはずです。
実はこれ、コンパイ ラ側の都合なんです。main関数の中で、func関数を呼び出していま
すが、その肝心のfunc関数は、main関数よりも後にあります。だからコンパイラが
「func」まで処理を進めたときには、まだfunc関数という存在を知らない為に、「宣言
されていない」などと警告を出すのです。ということは、func関数とmain関数を入れか
えればいい、ということになるわけです。
これを違う形で書き直すと、次の通りです。
main関数よりも上にfunc関数があるのは、どうも・・と思う方は、「funcという関数を
作ったよ」と、コンパイラに教えてあげればいいのです。これをプロトタイプ宣言と言い
ま す。そうすればコンパイラは、不安を抱えず警告も出さずにコンパイルしてくれます。
プロトタイプ宣言のしかたは簡単で、関数の形を書いておくだけです。
サンプル9-3をご覧ください。
<サンプル9-3>
void func(void);
void main(void)
{
func();
}
void func(void)
{
;
}
では、実際にH8を動かして、「何も動かないこと」 を確認してください。
ここで新しいキーワード「void」を使いました。
関数はもともと値をもらって何らかの処理をして値を返すものですが、このように値を返
す必要のない関数の場合は、「無効」という意味のvoidを使います。カッコの中にも
voidとありますが、これは省略されることもあります。
以降では、このようなプロトタイプ宣言を使った書き方を採用することにします。
−まとめ−
1.関数は、main関数と同じように作ることができる。
2.何度も同じ処理をする場合は、その処理を関数にするとよい。
3.関数を使う前に、関数の宣言(関数プロトタイプ宣言)をしなければならない。