上の例のように、file1.c file2.cという2つのソースファイルを作ります。 file1.cからfile2.cにある関数を呼び出すには、 extern宣言が必要です。これも宣言する位置によって 見える(呼び出せる)範囲が異なりますので注意してください。 #include はそのファイルでしか有効でありません。 従って、file2.cにも#include <stdio.h>が必要です。 変数xがどこから参照できるかはすでに第29章で解説してあります。 もう一度、上のプログラムをコメントを参照しながら じっくり眺めてみてください。//ここから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; }
さて、次に2つのソースファイルがあるのでコンパイルするときに
vc++1.51ではメニューバーより「Profict」-「Edit...」を選択して
この2つのファイルをプロジェクトに加える必要があります。
(当たり前ですが・・・)
File Name:からfile1.cを選びAddボタンでプロジェクトに追加します。 同様にfile2.cも追加します。
Files in Profect:にこの2つのファイルが含まれている
ことを確認します。
後は、今までと同じようにビルドすればexeができあがります。
vc++1.51以外の環境を使っている人も似たようなことをすれば
よいと思います。マニュアル等で確認してみてください。
サンプルのプログラムをいろいろ変更して 実験してみてください。
分割コンパイルをすると何だか、プログラムが
上達したような気になれます。(自己満足が大切です)
Update Dec/04/1996 By Y.Kumei