次へ: 3 関数定義部の取り出しについて 上へ: C のソースからプロトタイプ宣言を作成 前へ: 1 はじめに (PDF ファイル: awktg.pdf)


2 プロトタイプ宣言について

ここでは、少し C 言語のプロトタイプ宣言について説明します。

AWK や C 言語では、自分用の関数 (サブルーチン) を作って それを自分で使うことができますが、その場合 C 言語では、

  1. 関数を使う場合は、それを使う前にその関数が定義されていないと、 その返値は整数型 (int) であると見なされてしまう。
  2. 関数の定義を前に置く代わりに、空の宣言で代用してもよい。
のようになっています。 よって、少なくとも int 以外の値を返す関数は、
  double f1(double x)
  {
      ....
  }

  int main(void)
  {
      double x;

      x=f1(1.5);
      ....
のように、関数を使う前に定義するか、
  double f1(double x);

  int main(void)
  {
      double x;

      x=f1(1.5);
      ....
  }

  double f1(double x)
  {
      ....
  }
のように、使う前に空の宣言だけを置く必要があります。 この空の宣言を プロトタイプ宣言 といいます。

プロトタイプ宣言は、関数の記述位置を考えなくていいようにするだけでなく、 コンパイル時に引数のチェックを行うようにもなっていて、 よって、引数の数が足りないとか、引数の型が不適切である、 といったバグを検出することを可能にする仕組みで、 現在の C では標準的な書き方となっています。

なお、通常 C 言語のソースの先頭に ``#include <stdio.h>'' のようなインクルードファイルの指定を 書くと思いますが、 インクルードファイルの目的の一つは 標準ライブラリに対するプロトタイプ宣言です1

プロトタイプ宣言は、ソースの先頭に書くか、 あるいは別なファイルに書いておいて そのファイルをインクルードするか、のどちらかの方法が取られます。

プロトタイプ宣言を作るには、関数の定義の先頭の部分をコピーして、 最後に `;' をつければいいのですが、 たくさん関数がある場合は、それを手作業でいちいちやるのは面倒です。 そこで、そのような作業を行うツールを AWK で書く、 というのが本稿の目標です。


次へ: 3 関数定義部の取り出しについて 上へ: C のソースからプロトタイプ宣言を作成 前へ: 1 はじめに
竹野茂治@新潟工科大学
2006年6月22日