今回は、C言語でのプロトタイプ宣言について解説していきます。
この記事を読み終えると、あなたはプロトタイプ宣言マスターになることができると思いますので、ぜひ最後まで読んでいただけると嬉しいです。
プロトタイプ宣言とは?
プロトタイプ宣言とは、
・「この名前と引数・戻り値の関数が後で出てきますよ」
と関数の存在をコンパイラに先に教えるための宣言
です。
C++では、main
関数より下にある関数はそのままでは呼び出せないため、先に「プロトタイプ宣言」が必要です。
具体例
#include <iostream>
// プロトタイプ宣言
void HelloWorld();
int main() {
HelloWorld(); // ← ここで関数呼び出し
return 0;
}
// 関数の定義
void HelloWorld() {
std::cout << "Hello World!";
}
プロトタイプ宣言のvoid HelloWorld();
がないと、コンパイル時に「関数が見つからない」というエラーになります。
どんな時に必要?
・main関数より下に関数を定義する時
・複数のソースファイル(ヘッダファイル)を使うとき
・ライブラリの関数を使う場合(宣言がヘッダに書かれている)
不要な場合
main関数より上に関数を定義する場合は、プロトタイプ宣言は不要です。
#include <iostream>
void HelloWorld() {
std::cout << "Hello";
}
int main() {
HelloWorld();
}
この場合、コンパイラは関数の存在を既に知っているため宣言不要です。
ヘッダファイルとの関係
プロトタイプ宣言は、複数のファイルで同じ関数を使う時に特に重要です。
関数の宣言をヘッダファイル(.h
または.hpp
)にまとめることで、
他のソースファイルからincludeするだけで関数を使えるようになります。
▼hello.h
#ifndef HELLO_H
#define HELLO_H
#include <iostream>
void HelloWorld(); // プロトタイプ宣言
#endif
▼hello.cpp
#include "hello.h"// 宣言を読み込み
// 関数を定義
void HelloWorld() {
std::cout << "Hello from header!";
}
▼main.cpp
#include "hello.h" // 宣言を読み込む
int main() {
HelloWorld();
return 0;
}
まとめ
プロトタイプ宣言は、関数を先にコンパイラに知らせるための仕組みです。
mainより下に関数を書く場合や、複数ファイルで関数を共有する場合に必須になります。