ソースの分割

なげープログラムなので、分けてみました。これまで全部一緒の所に書いてたので、プログラム一本で、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