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

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言語を基礎からきっちりと理解することができます。

created by Rinker
¥2,178 (2022/05/20 18:31:52時点 Amazon調べ-詳細)

《IT未経験-特化型サービス》



他の「C」の記事はこちらからどうぞ

C

Posted by やろまい