プロトタイプ宣言

読み:ぷろとたいぷせんげん
品詞:名詞

C/C++で、コンパイラーに対して関数の情報を与えるもの。

目次

C/C++は、ソースコードの上から下へ順番に見て、既出の関数しか呼ぶことができない。このため、関数を呼ぶときは、それ以前に関数を定義するか、このプロトタイプ宣言で宣言をしておく必要がある。

Cの場合は、呼び出す順番と関数を書く場所を配慮すれば、必ずしもプロトタイプ宣言は必要ではないが、記述しておくと、コンパイル時に関数の呼び出しと定義が違う場合に警告が出るため、バグの混在をある程度予防することができる。

C++もクラスを使わない場合は同様である。クラス関数は必ずclass定義内で定義する必要があるが、その記述方法はCのプロトタイプ宣言に似ている。

なお、類似の言語でJavaの場合、メソッドはクラス内のどこに記述してあっても認識され、呼び出すことができる。従って、C/C++のようなプロトタイプ宣言は必要がない。

記述方法

CとC++は似ているが、C++ではより便利に改良されている。

C/C++問わず、一般的には実際のソースリストと分離して、ヘッダーファイルとして書かれることが多い。

C

関数名と、戻り値および引数の型を記述する。

int func1(int);

const long func2(const char *, int);

戻り値および引数の型には様々な修飾が可能。

引数が複数ある場合は関数の定義と同様にカンマで区切る。関数の定義のように変数名まで書いても良いが、プロトタイプ宣言では変数名は省略できる。

引数が無い場合は、voidを明示して宣言する。

int func3(void);

C++

C++の場合も基本的な書式は同じであるが、一部異なる点や拡張された点がある。

  • 引数を取らない場合、Cはvoidを明示する必要があるが、C++は明示不要

    int func4();

  • 戻り値をプロトタイプ宣言した場合、必ずreturnで戻さないとコンパイルエラーとなる
  • デフォルト引数の設定が可能になった

    int func5(bool = true);

    int func5() { ... }

    int main() {

    func5();

    func5(false);

    }

用語の所属
C
C++
関連する用語
関数

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club