第27章 インクルード

 今まで「おまじない」ですませてきた #include について今回は話していきます。少し短いですが、たまにはいいでしょうね。


 では、今回の要点です。


 では、いってみましょう。


 変数や関数は宣言しなければ使えないと言ってきました。ですが、cout や strlen の宣言を書いた覚えはありません。それにも関わらずこれらを使うことができました。これはどういうことなのでしょうか。

 実は、これらの宣言は別のファイル内で行われているのです。それが、iostream.h や、string.h なのです。

 そして、そのファイルを埋め込んで、2つ以上のファイルを合成する命令が #include なのです。そして、この作業を「インクルードする」といいます。include というのは「含む」という意味です。

 この説明だけでは少しわかりづらいでしょう。なので、ここで例を示してみます。

プログラム1プログラム2プログラム1+2
// Include1.h

void Hello();
// Include1.cpp
#include <iostream.h>
#include "Include1.h"

int main()
{
    Hello();
    return 0;
}

void Hello()
{
    cout << "やぁ、こんちは。" << endl;
    return 0;
}
// Include1.cpp
#include <iostream.h>
// Include1.h

void Hello();

int main()
{
    Hello();
    return 0;
}

void Hello()
{
    cout << "やぁ、こんちは。" << endl;
    return 0;
}

 関数のプロトタイプだけを Include1.h というファイルに分けて書きました。そして、Include1.cpp に

#include "Include1.h"

と書き、このファイルを取り込みました。すると、実際には Include1.cpp は「プログラム1+2」であるとして、コンパイルされるのです。

 本当はさらに iostream.h も展開されます。そして、この中に cout の宣言が入っているのです。また、string.h には strlen の宣言が、stdio.h には sprintf の宣言がそれぞれ入っているのです。

 で、strlen などの関数の中身はというと、それはまたさらに別のところにあって、それは自動的にリンクされます。

 また、このようにファイルの先頭でインクルードされるファイルのことをヘッダーファイルと言います。


 上のを見て少し変に思った方もいるでしょう。iostream.h は < > で囲んでいるのに、自分で作った Include1.h は " " で囲んでいるではありませんか。これはどういうことなのでしょう。

 それは、ファイルの置いてある場所に関係してきます。

 ツール側の提供しているヘッダーファイルをインクルードする時は < > で囲みます。ツール側の提供しているヘッダーファイルはあるフォルダに入れられています。そして、そのフォルダ内のファイルをインクルードするときに < > を使うのです。

 一方 " " は自分で作ったヘッダーファイルをインクルードするときに使います。ヘッダーファイルに限らず、自分で作ったファイルはそのワークスペースに対応したフォルダの中にあります。そして、そのフォルダ内のファイルをインクルードするときに " " を使うのです。


 今回はもうこれで終わりです。短かったですが、今回のことは重要です。とはいえ、大きなプログラムを作るときはいやでも使うことなので、そのうち自然に覚えてしまうでしょう。

 では、今回の要点です。


 それでは、さようなら。


第26章 プロトタイプ | 第28章 マクロの手始め

Last update was done on 1999.3.16

この講座の著作権はロベールが保有しています