プロトタイプ宣言、ヘッダーファイル、インクルード

  • どんな関数が定義されているかを宣言するプロトタイプ宣言:hoge.h
  • 宣言した関数の処理が書かれているファイル:hoge.c
  • hoge.hに宣言されていてhoge.cに書かれている関数を使う別のソースファイル:my.cでは、hoge.hに宣言されている関数を使います、と冒頭で言っておく(コンパイラが混乱しないため)
  • 参考:こちら
  • やってみる
    • main()を含むソースファイル myLE.c
    • myLE.cのなかではstdio.hを使う
    • myLE.cのなかでは自作関数mylog(),myexp()を使う
      • この2関数はそれぞれmylog.c,myexp.cソースファイルに書かれている
      • この2関数のプロトタイプをmylogexp.hファイルで宣言しておく
    • mylog.c,myexp.cのソースはmath.hをインクルードする必要がある
    • そんな中身
      • mylogexp.h
double mylog(double x);
double myexp(double x);
      • mylog.c
# include <math.h>

double mylog(double x){
	return(log(x));
}
      • myexp.c
# include <math.h>

double myexp(double x){
	return(exp(x));
}
    • myLE.c
# include <stdio.h>
# include "mylogexp.h"

main(){
	double x,y,z;
	x = 1;
	y = mylog(x);
	z = myexp(y);
	printf("%f\n",z);
}
    • 実行
      • myLE.c内部で与えた変数x=1を対数にして指数にしているから結局、初めに与えたxの値が表示されるはず
ryamada@CFS10 ~
$ gcc myLE.c mylog.c myexp.c -o myLEtest

ryamada@CFS10 ~
$ ./myLEtest.exe
1.000000

ryamada@CFS10 ~