分割コンパイル

ソースプログラムの分割

実際にソースファイルを分割したプログラムを作ってみよう。 簡単な例として、sub 関数で足し算を行なうだけの、

#include <stdio.h>
int main()
{
  int add(int, int);		/* プロトタイプ宣言 */
  int x=5, y=4;
  int result;
  result = add(x, y);
  printf("%d + %d は %d です\n", x, y, add(x, y));
}

int add(int v1, int v2)
{
  return v1+v2;
}

このプログラムの、main関数とそれ以外を分けると以下のようになる。

main.c

#include <stdio.h>
int main()
{
  int add(int, int);		/* プロトタイプ宣言 */
  int x=5, y=4;
  int result;
  result = add(x, y);
  printf("%d + %d は %d です\n", x, y, add(x, y));
}

sub.c

int add(int v1, int v2)
{
  return v1+v2;
}

main関数では、main.c の中には存在しない add 関数を呼んでいる。しかし、main関数先頭部分 で宣言したaddのプロトタイプ宣言により、Cコンパイラは、

addって関数がどっかにあるんだな」

と手がかりをもらうので、最後まで迷うことなくコンパイルできる。 上記の2つのソースプログラム main.c, sub.c を作成し 実際にコンパイル&リンクしてみよう。

gcc -c main.c
gcc -c sub.c
gcc -o main main.o sub.o

実行結果を確認しよう。

./main
5 + 4 は 9 です

この例では、二つのファイルから実行プログラムを作成したが、 実際には何個のファイルで作成しても良い。


目次