学生向けプログラミング入門

学生向けにプログラミングを解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails

C++プログラミング入門その20 モジュールと分割コンパイル1(2020年4月更新)

<<前  [TOP]  次>>


Visual Studioで新規プロジェクトを作り、以下の2つのcppファイル、1つのヘッダーファイルを作成して下さい。


cppファイルはいつも通り「ソースファイル」フォルダに、.hファイルは「ヘッダーファイル」フォルダに作成します。


ヘッダーファイルの追加
ヘッダーファイルの追加
ファイルの構成
ファイルの構成


【Bunkatsu1.cpp】

/* file : Bunkatsu1.cpp */

#include <iostream>
#include "head.h"

int main() {

	    std::cout << "test1 " << test1(3.0, 4.0) << std::endl;
		std::cout << "test2 " << test2("string") << std::endl;
}



【Bunkatsu2.cpp】

/* file : Bunkatsu2.cpp */

#include<iostream>
#include "head.h"

float test1(float x, float y) {

	return x*x*y*y;
}

const char *test2(const char *s) {
	return s+1;
}



【head.h】

/* header file : head.h */

float test1(float x, float y);
const char *test2(const char *s);



C言語のプログラムは機械語に翻訳された後に必要なライブラリ(#includeなど)とリンクされることによって実行可能な形式となります。
これらの過程は厳密に前者がコンパイルと呼ばれ、後者がリンクと呼ばれています。
リンク自体はライブラリのリンクに限らず、開発者が自由に行えるようになっています。
つまり開発者がプログラムを分割して個別にコンパイルし、できたオブジェクトをリンクすることも可能になっています。
この分割されたプログラムの断片をモジュールといいます。


プログラムソースを二つに分けて開発すると、両方のプログラムソースの先頭に宣言が必要となります。
関数宣言はリンクさせたいモジュールの先頭にコピーすることになります。
たくさんの関数やモジュールがある場合はこの記述が面倒なので、ヘッダーファイルというファイルにまとめて記述して「include」で読み込ませた方が便利です。
ヘッダファイル名は以下のようにします。

ファイル名.h

これをプログラムソースに取り込むにはプログラムソースの先頭に以下のように記述します。

include ”ヘッダファイル名”

このようにincludeでヘッダファイル名をダブルコーテーション(””)で囲みます。
この記述をすべてのモジュールに宣言します。


分割コンパイル、ビルド(リンク)の方法について説明します。


順番として、まずヘッダファイルを作成します。
次にmain関数のある関数を作成、コンパイルします。


指定のファイルのみコンパイルするには、ファイル名で右クリックして「コンパイル」を選択します。


指定ファイルのコンパイル
指定ファイルのコンパイル


このときmain関数のあるプログラムソースのファイル名がクラス名になります。


次に残りのモジュールを先ほど作成したクラス名のワークスペースでコンパイルしてください。
すべてのモジュールのコンパイルが終わったらビルド(リンク)してください。
エラーがなくビルドが終了したら、実行できます。


サンプルプログラムをビルドして実行してみましょう。


プログラムの実行結果
プログラムの実行結果


<<前  [TOP]  次>>