ヘッダファイル

自作関数をmainとは別のファイルに分割する方法を調べた。あまりに基礎すぎてググってもなかなか見つからんかった(涙)。

やることはすごい単純で、intの加算と減算をするaddとsubtractをつくるだけ。

コード

calc.h
int add (int a, int b);
int subtract (int a, int b);
calc.c
#include "calc.h"

int add (int a, int b)
{
    return a + b;
}

int subtract (int a, int b)
{
    return a - b;
}
main.c
#include <stdio.h>
#include "calc.h"

int main ()
{
    int i;

    i = add(1,2);
    printf("%d\n", i);

    i = subtract(3,1);
    printf("%d\n", i);
}

コンパイル&実行

kotaro@mac:~/Dev/Introduction-to-C/chapter5> cc hello_my_header.c calc.c -o hello_my_header.out; ./hello_my_header.out
3
2

mainとcalc.hの実装であるcalc.cの両方を指定するのがミソ(キホン中のキホンなんだろうけどさ)

インクルードガード

1つのヘッダファイルを複数の箇所からインクルードしてしまうとコンパイルエラーになってしまうので、ifndef/define/endifでガードしたほうがいいとのこと。

訂正版calc.h
#ifndef CALC_H
#define CALC_H
int add (int a, int b);
int subtract (int a, int b);
#endif