>> C言語入門トップに戻る
今回はファイル分割について説明します。
プログラムを一つのファイルに書いていると、量が多くなったときに
縦に長くなってしまって、非常に見づらくなります。
そんな時はファイル分割を使って、コードを綺麗に見やすくまとめましょう。
まずヘッダファイルを作ります。
今までは、stdio.hなどのヘッダファイルは元からあるものをインクルードして使っていましたが、
今度は自分でヘッダファイルを作ってインクルードします。
ヘッダファイルには共有したい(他のファイルでも使いたい)関数や変数を宣言します。
まずファイルの作り方から説明します。
ヘッダファイルを右クリック→追加→新しい項目、を選びます。
次に、ヘッダファイルを選択し、ファイル名を入れて、追加を押します。
ファイルが作成されるので、あとは今までどおりコードを書くだけです。
今回はファイルを三つ作ります。
下記のコードの通りにファイルを作ってください。
ヘッダファイル【define.h】
ソースファイル【test2.cpp】
ソースファイル【test.cpp】
これを実行すると、10と表示されます。
ソースコードの解説をします。
まずヘッダファイルを見て下さい。
extern int all;
extern int calc(int,int);
とありますが、extern指定子というものが付いています。
これは、その変数や関数がどこか別の場所(ファイル)で定義されているよ、ということを明示するものです。
そして、このヘッダファイルをインクルードしたファイルでは、
この変数がどこかに定義されているということを知ることができる為、
その変数や関数にアクセスすることが出来ます。
ということは、この変数や関数はどこか別のファイルで定義されている必要があります。
ヘッダファイルに書かれているのは、宣言しか行われていません。
宣言方法は、上記のように型と変数名、関数のプロトタイプ宣言だけ書きます。
そして、変数の定義はtest.cppで、
int all=4;
と、定義されています。
通常の変数を宣言すると同じように書けばよいです。
ですが、他のファイルからアクセスできるということは、
他のファイルからもアクセスできるグローバル領域に書いて、
グローバル変数として定義しなければなりません。
ですので、グローバル変数として定義しています。
続いて、calc関数の定義です。
これは、test2.cppで定義されています。
この関数の中でも、グローバル変数allにアクセスしているので、define.hをインクルードしています。
これで全ての定義が終わりました。
以降は、define.hをインクルードしたファイルからは、このall変数とcalc関数を使うことができます。
main関数で、calc関数を実行していますが、第一引数に2、第二引数に4を渡しています。
calc関数の処理を見てもらうと、その値を足して、all変数の値を足した後、その値を返しています。
つまり、4+2+4=10ということで、10の値が返ってきて表示されているというわけです。
これがファイル分割の方法です。
理解できましたでしょうか?
ファイル分割は今後プログラミングしていく上で絶対必要なスキルですので、頑張って覚えましょう。
>> 【メモリの動的確保】に進む
>> C言語入門トップに戻る
ファイル分割について
プログラムを一つのファイルに書いていると、量が多くなったときに
縦に長くなってしまって、非常に見づらくなります。
そんな時はファイル分割を使って、コードを綺麗に見やすくまとめましょう。
まずヘッダファイルを作ります。
今までは、stdio.hなどのヘッダファイルは元からあるものをインクルードして使っていましたが、
今度は自分でヘッダファイルを作ってインクルードします。
ヘッダファイルには共有したい(他のファイルでも使いたい)関数や変数を宣言します。
まずファイルの作り方から説明します。
ヘッダファイルを右クリック→追加→新しい項目、を選びます。
次に、ヘッダファイルを選択し、ファイル名を入れて、追加を押します。
ファイルが作成されるので、あとは今までどおりコードを書くだけです。
今回はファイルを三つ作ります。
下記のコードの通りにファイルを作ってください。
ヘッダファイル【define.h】
extern int all; extern int calc(int,int);
ソースファイル【test2.cpp】
#include "define.h" int calc(int value1,int value2) { return value1+value2+all; }
ソースファイル【test.cpp】
#include <stdio.h> #include "define.h" int all=4; int main(void) { int buf; buf=calc(2,4); printf("%d\n",buf); return 0; }
これを実行すると、10と表示されます。
ソースコードの解説をします。
まずヘッダファイルを見て下さい。
extern int all;
extern int calc(int,int);
とありますが、extern指定子というものが付いています。
これは、その変数や関数がどこか別の場所(ファイル)で定義されているよ、ということを明示するものです。
そして、このヘッダファイルをインクルードしたファイルでは、
この変数がどこかに定義されているということを知ることができる為、
その変数や関数にアクセスすることが出来ます。
ということは、この変数や関数はどこか別のファイルで定義されている必要があります。
ヘッダファイルに書かれているのは、宣言しか行われていません。
宣言方法は、上記のように型と変数名、関数のプロトタイプ宣言だけ書きます。
そして、変数の定義はtest.cppで、
int all=4;
と、定義されています。
通常の変数を宣言すると同じように書けばよいです。
ですが、他のファイルからアクセスできるということは、
他のファイルからもアクセスできるグローバル領域に書いて、
グローバル変数として定義しなければなりません。
ですので、グローバル変数として定義しています。
続いて、calc関数の定義です。
これは、test2.cppで定義されています。
この関数の中でも、グローバル変数allにアクセスしているので、define.hをインクルードしています。
これで全ての定義が終わりました。
以降は、define.hをインクルードしたファイルからは、このall変数とcalc関数を使うことができます。
main関数で、calc関数を実行していますが、第一引数に2、第二引数に4を渡しています。
calc関数の処理を見てもらうと、その値を足して、all変数の値を足した後、その値を返しています。
つまり、4+2+4=10ということで、10の値が返ってきて表示されているというわけです。
これがファイル分割の方法です。
理解できましたでしょうか?
ファイル分割は今後プログラミングしていく上で絶対必要なスキルですので、頑張って覚えましょう。
>> 【メモリの動的確保】に進む
>> C言語入門トップに戻る