2011年2月5日土曜日

[C/C++] ヘッダファイル

プログラムの冒頭に書かれている,"#include <stdio.h>"や"#include <math.h>"の意味について以下に説明します.

main関数の前に,あらかじめ使用する関数を宣言します.したがって,"printf"分野"scanf"文といったものも関数なので,それを使用する前に宣言しておく必要があります.そのため,それらの関数を読み込むためのヘッダファイル"stdio.h"を読み込む命令として
        #include <stdio.h>
をプログラムの先頭に書いておく必要があります.

#includeの一般的な書式は以下のようになります.
        #include <ファイル名>
        #include "ファイル名"
こうすることで,指定されたファイルが読み込まれ,それらが記述された場所へファイルの内容が展開されます.ヘッダファイルの記述方法は2通りありますが,"stdio.h"や"math.h"などの標準ヘッダファイルは<と>で囲みます.これに対して自作のヘッダファイルを読み込む場合にはファイル名を"と"で囲みます.なお,ヘッダファイルの拡張子は"h"です.

具体的な#includeの動作は以下のようになります.自作のヘッダファイル"sample.h"の内容が
    void swap(double *x, double *y) ;
    void iswap(int *x, int *y) ;
だとすると,
    #include "sample.h"
        int a=1, b = 2 ;
        double a=1.5, b=2.5 ;
と記述すると,コンパイル時には次のように解釈されます.
    void swap(double *x, double *y) ;
    void iswap(int *x, int *y) ;
        int a=1, b = 2 ;
        double a=1.5, b=2.5 ;

#includeは,それが記述された場所に指定されたファイルの内容を展開します.ソースコードのどこにでも#includeを書くことができますが,プロトタイプ宣言はmain関数より先に展開しておく必要があるので,通常はプログラムの先頭部分に記述します.

自作のヘッダファイルがカレントディレクトリにない場合は,コンパイル時に"-I"オプションを使って,ヘッダファイルのあるディレクトリを指定する必要があります.例えば,自作のヘッダファイルを
    /home/xxx/yyy/zzz/include
においている時には,コンパイル時に,以下のようにヘッダファイルを検索対象とします.
    gcc -I/home/xxx/yyy/zzz/include/ ソースコード名

0 件のコメント :

コメントを投稿