関数プロトタイプ
関数プロトタイプを使えば、コンパイラに関数 "fac" が1つの整数引数をとることを知らせることができ、それによってコンパイラはこのようなエラーを検出できるようになる。
なお、関数の定義および宣言における戻り値の型指定を省略した場合は、intと仮定される。また関数の定義における引数の型指定を省略した場合も、intと仮定される。
以上のように、プロトタイプ宣言なしで関数を呼び出すコードや、戻り値の型指定を省略したコードは、たとえ標準規格としては適合であっても危険であるため、多くのCコンパイラは警告を出すようになっている。C99では戻り値の型指定がない場合にintと仮定する仕様や、関数プロトタイプがない場合に戻り値をintと仮定する仕様が標準規格の文面から削除(廃止)され、関数は呼び出す前にプロトタイプ宣言が必須となった。ただし、C99のプロトタイプ宣言では依然として引数を省略することもでき、例えば前述の例では以下のようなプロトタイプ宣言でも適合する。
一方、C++のほうはC++98として標準化された当初から完全なプロトタイプ宣言が必須となっている。またC++では、引数を省略した上記のプロトタイプ宣言は、下記のように「引数無し」と等価であるとみなされる。