C/C++で"Hello, World!":ソースコードを読む

沖林正紀
2008-01-25 08:00:00
  • このエントリーをはてなブックマークに追加

#includeとは?

 最後に残ったのは、冒頭の#include だ。これはprintf関数をリスト1で用いられるようにするために必要だ。前項でprintf関数はあらかじめ用意された関数と述べたが、実際には、この#include ...を記述しなければprintf関数を利用することはできない。

 なぜかというと、処理系が持っているstdio.hというファイルにprintf関数の定義(の一部)が書かれているからだ。このようなものをヘッダファイルという。stdio.hには、printf以外にもたくさんの関数の定義が記述されている。つまり、#include を記述することによって、printfをはじめとしてstdio.hというヘッダファイルで定義されている関数をすぐに利用できるということだ。

 いちいち#includeを記述するのは面倒だと思うかもしれない。しかしこれには理由がある。それは、コンパイルのたびに、関数の定義がどこに存在するのかを、処理系のすべてのファイルの中から探しているのでは、とても時間がかかってしまうからだ。

 それよりは、プログラムで必要な定義だけを読み込むようにしたほうが、コンパイルの時間が少なくて済むだろうということは、すぐに想像がつくはずだ。なので、#includeには面倒がらずに付き合っていただきたい。

 次回は、データ型と書式について紹介したい。

  • コメント(1件)
#1 Jitta   2008-04-01 22:36:49
> main関数の戻り値が0となっているが、引数は存在しない。
 引数は、存在しないのではなく、「使っていない」ですよね?main は、int argc と char** argv、環境によってはもう一つ char** env が引数として存在していますよ。


> 関数の戻り値は、関数名の前に記述することになっている。
 言語構文を説明する前に関数の説明をするから、こういう変な説明になるんですよね。
 「関数の戻り値」ではなく、「関数の戻り値の型」だというのは重箱の隅として、「関数の宣言をしなければならない」という説明が必要ですよね。
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]