このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【C言語】ユーザー定義関数の注意点(プロトタイプ宣言)

2024年9月27日

C言語でユーザー定義関数(自分で作る関数)を使う時には1つ注意点があります。

それは、ユーザー定義関数は呼び出される前に定義する必要があることです。

この順番が逆になっているとコンパイルエラーが起こります。

エラーとなるケース / エラーにならないケースをそれぞれ紹介するので学んでみてください。

コンパイルエラーとなるケース

#include <stdio.h>

int main(void) {
	printHello();
}

/* ユーザー定義関数を後に定義 */
void printHello(void) {
	printf("HelloWorld");
}

このプログラムではmain関数がprintHello関数を呼び出しています。

しかし、呼び出したタイミングではまだprintHello関数が定義されていない(printHello関数が下にある)ため、コンパイルエラーとなります。

コンパイルエラーとならないケース

コンパイルエラーを避けるには次の2つの方法があります。

基本的には、2個目のプロトタイプ宣言を使いましょう。

1. ユーザー定義関数を呼び出される前に定義する

#include <stdio.h>

/* ユーザー定義関数を先に定義 */
void printHello(void) {
	printf("HelloWorld");
}

int main(void) {
	printHello();
}

1つはユーザー定義関数を呼ばれるより先に書くことです。

上のプログラムではmain関数がprintHello関数を呼び出しています。

printHello関数の方が先に書かれているのでコンパイルエラーとなりません。

2. プロトタイプ宣言

#include <stdio.h>

// プロトタイプ宣言
void printHello(void);

int main(void) {
	printHello();
}

void printHello(void) {
	printf("HelloWorld");
}

プロトタイプ宣言は、最初にユーザー定義関数の概要を記載する方法です。

上のサンプルコードのように、関数の返り値の型と引数の型を宣言します。

こうするとユーザー定義関数の順番に関係なく、コンパイルエラーが避けられます。

関数の多いプログラムでは、必ずプロトタイプ宣言を行いましょう。

使用関数が一覧できるという、副次的なメリットもあります。

C言語を学ぶなら苦C

C言語を初めて学ぶなら苦しんで覚えるC言語がおすすめです。

分かりづらいC言語を基礎からきっちりと理解することができます。

C

Posted by やろまい