第39章 分割コンパイル  


以前にも少し書きましたが、 今回は、分割コンパイルについて解説します。 簡単なプログラムであれば1つのソースファイルに まとめて書いてもよいのですが、だんだん複雑 (巨大)になってくると面倒です。それで、ソースファイルを 分けて記述するということがよく行われます。 機能ごとにソースファイルを別にするなど いろいろ工夫できると思われます。 この時注意すべきことは、関数や、変数などが 「どこから見えて、どこからは見えない」 ということをしっかりと把握することだと思います。 では、簡単な例を表示しましょう。

//ここからfile1.c////////////////////////////// #include <stdio.h> void func1(void); //ここでextern int func2(void); //と宣言するとこのファイルのどこからでも //func2()を呼び出せます。 int main(void) { int x = 10; printf("ここは、mainです\n"); printf("xの値は%dです\n", x); func1(); return 0; } extern int x; //このファイルではこの宣言以降で //file2.cの xを参照できます。 //(main関数からは参照できない) void func1(void) { extern int func2(); //ここでextern宣言をするとfunc2() //はこの関数の中からのみ呼び出せます。 printf("ここは、func1です\n"); printf("xの値は%dです\n", x); func2(); return; } //ここからは、file2.c///////////////////////////////////// #include <stdio.h> //このファイルにも#include <stdio.h>は必要 int x = 200; int func2() { printf("ここは、func2です\n"); printf("xの値は%dです\n", x); return 0; }

上の例のように、file1.c file2.cという2つのソースファイルを作ります。 file1.cからfile2.cにある関数を呼び出すには、 extern宣言が必要です。これも宣言する位置によって 見える(呼び出せる)範囲が異なりますので注意してください。 #include はそのファイルでしか有効でありません。 従って、file2.cにも#include <stdio.h>が必要です。 変数xがどこから参照できるかはすでに第29章で解説してあります。 もう一度、上のプログラムをコメントを参照しながら じっくり眺めてみてください。

さて、次に2つのソースファイルがあるのでコンパイルするときに vc++1.51ではメニューバーより「Profict」-「Edit...」を選択して この2つのファイルをプロジェクトに加える必要があります。 (当たり前ですが・・・)

File Name:からfile1.cを選びAddボタンでプロジェクトに追加します。 同様にfile2.cも追加します。

Files in Profect:にこの2つのファイルが含まれている ことを確認します。

後は、今までと同じようにビルドすればexeができあがります。 vc++1.51以外の環境を使っている人も似たようなことをすれば よいと思います。マニュアル等で確認してみてください。

サンプルのプログラムをいろいろ変更して 実験してみてください。

分割コンパイルをすると何だか、プログラムが 上達したような気になれます。(自己満足が大切です


[Index][総合Index] [Previous Chapter] [Next Chapter]

Update Dec/04/1996 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。