身につくC言語17.5回目 Borland C++ Compilerでファイルを分割して実行する方法

c言語でファイルの分割をしたいという場合があると思います。

量が少ないプログラムではファイルを分割する必要はなくなるのですが、量の多いプログラムを扱うときは、分割することによってソースコードが見やすくなります。

今回はBorland C++ Compilerでファイルを分割する方法を紹介していきます。

元のプログラム


#include<stdio.h>
int nibai(int x);
int main(void)
{
	int num;
	int ans;
	
	printf("整数を入力してください。\n");
	scanf("%d",&num);
	
	ans=nibai(num);
	
	printf("%dの2倍は%dです。\n",num,ans);
	return 0;
}
int nibai(int x)
{
	return x*2;
}

今回はこのプログラムを分割していきます。

入力した整数を2倍にして返す関数です。

簡単ですよね?

関数がわからない人はこちら↓

身につくC言語-11回目 関数の使い方1-

用意するファイル

一番簡単なファイルの分割でも、3つのファイルを作成する必要があります。

  1. ヘッダーファイル
  2. 関数の内容を記述したファイル
  3. main関数が書かれているファイル

 

1.ヘッダーファイル

今回は二倍する関数なので、「nibai.h」という名前のファイルにしましょう。

.hというのはヘッダーファイルを表します。


int nibai(int x);

こんな感じです。

関数プロトタイプ宣言が書かれていますね。

 

2.関数の内容を記述したファイル

関数の内容を記述するので、「nibai.c」という名前にします。


#include"nibai.h"
int nibai(int x)
{
	return x*2;
}

ここで大切なのは、#include”nibai.h”というところです。

いつもは<>で囲っていますよね。

しかし、今回は自分で作成したヘッダーファイルなので、””で囲む必要があります。

 

3.main関数が書かれているファイル

main関数が書かれているので、名前は「main.c」とします。


#include<stdio.h>
#include"nibai.h"

int main(void)
{
	int num;
	int ans;
	
	printf("整数を入力してください。\n");
	scanf("%d",&num);
	
	ans=nibai(num);
	
	printf("%dの2倍は%dです。\n",num,ans);
	return 0;
}

ここでも#include”nibai.h”を記述する必要があります。

 

nibai.hをインクルードすることでnibai.hに記述した関数プロトタイプ宣言を読み込み、nibai(num);を使えるようにするのです。
しかし、このままだとエラーになるはずです。

分割したファイルを実行できるようにするには、もう一工夫必要です。

 

コンパイル時のパラメータの変更

「コンパイル時のパラメータの変更」と難しく書いていますが、設定は簡単です。

まずは、上のメニューバーから「実行(R)」をクリックしましょう。次に「コンパイル時のパラメータ」をクリックします。

 

コンパイル時のパラメータ(C):とかかれているところに


-emain main.c nibai.c

と入力し、OKボタンを押します。

 

「-emain」は「main」という.exeファイルを作成するということです。

あとの二つ「mian.c」「nibai.c」は、この二つを一緒にコンパイルするということです。

OKを押したら、main.cを開いて実行をしてみてください。(一度エラーが出ても、もう一度実行を押すことで実行できる場合があります。)

 

実行ができない場合は、本当にmain.exeファイルができているか、ファイルを確認してみてください。

ない場合は文法エラーです。

まとめ

main.exeファイルがあるのに、main.cから実行ができないという場合には、コマンドプロンプトから実行してみてください。

main.exeファイルがある階層にディレクトリを変更し、「main」と入力すると実行ができます。

 

ファイルの分割は大きなプログラムを作成するときに必須となります。c言語での分割はかなりめんどくさいですが、覚えておいた方がいいでしょう。(もっと簡単な方法があるはず…)

参考サイト

苦しんで覚えるC言語-最小限の分割-