【C言語】プロトタイプ宣言とは?|必要性・使い方をわかりやすく解説

サムネイル画像 C++

今回は、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より下に関数を書く場合や、複数ファイルで関数を共有する場合に必須になります。