関数の定義

関数の定義は、一般的には次の形式をしている。

戻り値の型 関数名(引数リスト)
{
    文;
    ....
    return 戻り値;
}

基本的には main 関数と同じだ。戻り値がない場合は void を指定する。また、引数がない場合にも vold と書いておく。戻り値は return で返す。

main 関数と違うのは、関数プロトタイプの宣言が必要だということ。関数プロトタイプは次のような形式をしている。

戻り値の型 関数名(引数リスト);

これを実際に関数を定義する前に書いておく(普通はファイルのはじめのほう)。

#include

void func1(void); // prototype of func1()

int main(void)
{
    printf("I like ");
    func1();
    printf(".\n");
}

void func1(void)
{
    printf("C");
}

実行結果:

takatoh@nightschool $ ./sample_1_7
I like C.

ところで、関数プロトタイプを書かないとどうなるだろう。上のプログラムの関数プロトタイプをコメントアウトしてコンパイルしてみると:

takatoh@nightschool $ gcc sample_1_7a.c -o sample_1_7a
sample_1_7a.c:13:6: warning: conflicting types for ‘func1’ [enabled by default]
 void func1(void)
      ^
sample_1_7a.c:9:5: note: previous implicit declaration of ‘func1’ was here
     func1();
     ^

何やらよくわからないけど、エラーになるってことはわかった。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください