法大奥山研究室

 previous  contents

8.3. プロトタイプ宣言


 関数は,呼び出せば,動くように思いがちですが,どのような関数なのかを宣言せずに呼び出すのは,やや乱暴かもしれません。そこで,呼び出す前に関数の原型を示す宣言が用意されています。

■関数原型宣言(関数プロトタイプ宣言,Function Prototype Declaration)

返却値型 識別子(仮引数の型,...);
返却値型 識別子(仮引数の型 仮引数名,...);

ここで,識別子(仮引数の型,...) 部分が「3.2. 宣言子」で触れた「関数宣言子」です。プロトタイプが示された時点から,その関数の呼び出しは,すべて同じ関数であると認識されます。[C99, 6.9.1, 7] プロトタイプ宣言がない前に関数を呼び出すと,コンパイル時に warning が出ます。[C99, Annex I, 2]

 例えば,

double f(char x, int y)
{ /* ... */ }

という関数の定義をせずに,関数 f を呼び出すのであれば,プロトタイプ宣言を予め行います。

double f(char, int);

プロトタイプとは,返却値型と仮引数の型が何なのかを示したものなので,仮引数の識別子はあってもなくても同じです。


 previous  contents