5. 分割コンパイル
大きなプログラムになってくると、何万行のプログラムが1つのファイルに存在するような状態になってしまいます。
これでは見にくいですし、チェックもしずらいですね。ですから、プログラムを種類別に
別々のファイルでつくり、それをコンパイルするときにくっつけたらいいと思いませんか?
まず、分割コンパイルの基本的な例を。
今回は基本的な例を示すために、DXライブラリのプロジェクトは使いません。
普通の空のプロジェクトを使用します。
今、メイン関数をもったtest.cppというファイルと、画面に文字列を表示するdisp関数を持ったtest2.cppファイルがあったとしましょう。
test.cpp----------------------------
#include <stdio.h>
char a[30]="hello";
extern void disp();
void main(){
disp();
}
-----------------------------------
test2.cpp-----------------------------
#include <stdio.h>
extern char a[30];
void disp(){
printf("%s",a);
}
------------------------------------
test2.cppファイル内で使用している文字列は、違うファイルの中で宣言され、値が代入されたものです。
ですから「extern宣言」という作業をしてやらなければなりません。
extern宣言というのは、「他の場所でこの変数が宣言してあるよ」というものです。
ですからこの宣言を行うと、違うファイルの中で宣言されたa配列が使用可能になるわけです。
なお、extern宣言と同時に初期化は出来ませんのでご注意ください。
両者の宣言の違いに注目してください。
一方関数も同様です。test.cppファイル内でdisp関数を呼んでいますが、宣言されているのはtest2.cpp内です。
ですからこれもextern宣言する必要があるのです。
stdioをインクルードする必要はどちらにもあります。
プログラムファイルを追加するときは、VCの場合、
ソリューションエクスプローラーの「ソースファイル」で・・
右クリックして「新しい項目の追加」を選択し、ファイル名を入力。
すると新しいファイルが作成されます。これで完了です。
それぞれのファイルに下記プログラムを書いて実行してみてください。
/* test.cpp */
//素材必要なし
#include <stdio.h> char a[30]="hello"; extern void disp(); void main(){ disp(); }
/* test2.cpp */
//素材必要なし
#include <stdio.h> extern char a[30]; void disp(){ printf("%s",a); }
DXライブラリ著作権表示
DX Library Copyright (C) 2001-2006 Takumi
Yamada.