脱初心者 C 講座

プロトタイプ宣言とは仮の宣言であり、「今後、そういう関数が出てくる」


と先に形だけ定義しておくものだ
プロトタイプ宣言した関数はかならずあとで定義されなくてはならない
プロトタイプ宣言のみの場合はコンパイルエラーがおきる
#include <stdio.h>

int prtfunc(int a, char b){

	return 0;

}

void main(){

	prtfunc(2,2); /*引数の値に意味はない*/

}
というプログラムにおいて、
prtfuncのプロトタイプ宣言はint prtfunc(int a, char b)
行末記号のセミコロンをつけただけのものになる
#include <stdio.h>

int prtfunc(int a, char b);/*これがプロトタイプ宣言*/

int prtfunc(int a, char b){

	return 0;

}

void main(){

	prtfunc(2,2); 

}
ちなみにこのままコンパイルも通る
プロトタイプ宣言がされれば関数の実体の場所は、
プロトタイプ宣言より後であればどこでもよい
#include <stdio.h>

int prtfunc(int a, char b);/*これがプロトタイプ宣言*/


void main(){

	prtfunc(2,2); 

}

int prtfunc(int a, char b){

	return 0;

}


と、書けるということ。
基本的にコンパイラはプログラムの上から下に向かってコンパイルしていく
ところがそこまでに記述のない関数をいきなり使おうとすると
「そんな関数しらんがな」とエラーを出す
プロトタイプ宣言はコンパイラにむかって、
「とりあえずこういう関数があるから。詳しくは後のほうに書いてあるんでよろしく」
と伝達する役目をもっているのでコンパイルエラーにはならなくなる

最初の中括弧まで+セミコロンでプロトタイプ宣言のできあがり。


とくに難しいことも無いのでコードの整理のために必要があれば積極的につかっていこう