なげープログラムなので、分けてみました。これまで全部一緒の所に書いてたので、プログラム一本で、5000行とか、バカなことになってました。
基本的に、メインのプログラムと、サブのプログラムを用意すれば良いみたいです。あとは、必要に応じて、諸々のプロトタイプ宣言とか、共有する変数の宣言をするヘッダファイルを作れば良いっぽい。そして、それをメインのプログラムが引っ張ってくればいいとか、そんな感じ。
例えば、UとPという配列変数を共有して使い、サブプログラムにぶち込む関数をhogeraにしたければ、common.hというヘッダファイルに、
int LL; double U[LL], P[LL]; void hogera (double U[LL], double P[LL]);
とか、書いて、メインの方で、これをインクルード。例えば、main.cを親分だとして、中でsub.cから、hogeraを使うとすると、
#include <stdio.h> #include "common.h" int main () { hogera (U, P); return 0; }
みたいな感じ。""でインクルードするのは、ユーザが定義したものを示すらしいです。
そして、サブの方のプログラムを、sub.cとすると、
#include <stdio.h> #include "common.h" void hogera (double U[LL], double P[LL]) { ... }
で行けるらしい。
Makefileを使う場合
依存関係があるので、この場合は、sub.cからコンパイルして、オブジェクトファイルsub.oを作って、その後でmain.cをコンパイルしてmain.oを作って、最後にsub.oとmain.oをリンクするらしい。
Makefileあると、コンパイルが時間掛からなくていいですねと。Windowsでやってるときは、こういうのをどうするのか良く分かんないんですよね。開発環境とか使ったことねーし。
そして、すっげー適当なMakefileは、
sub.o:sub.c cc -c sub.c sub.o main.o:main.c cc -c main.c main.o main:sub.o main.o cc -o sub.o main.o main
とか、その他色んな記号を使いたければ、適当にやれば良いかと存じます。
http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide84-1.html
http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide85.html