第14問で取り上げた「三角形の面積を計算して表示するプログラム」から、「三角形の面積を計算する」部分だけを別のモジュールに切り分けました。以下はそのヘッダーファイルですが、C言語としてぜひ入れておきたい要素が足りません。

このヘッダーファイルに何が足りないか分かりますか?
triangle.h
typedef struct {
double base;
double height;
} Triangle;
double TriangleArea(const Triangle *triangle);
なお、このモジュールは別のソースファイル内から、次のように使用することを想定しています。
main.c
#include <stdio.h>
#include <stdlib.h>
#include "triangle.h" /* ヘッダーファイルをインクルード */
int main(void) {
Triangle triangle = { /* 「三角形」の構造体を使用 */
.base = 6.0,
.height = 4.0
};
printf("area = %f\n", TriangleArea(&triangle)); /* 面積を計算 */
return EXIT_SUCCESS;
}
実行結果
area = 12.000000

このプログラムが、2つのモジュールでできているのが分かるかしら?

はい。「triangle」と「main」ですね。

そうね。上には「triangle」のヘッダーファイルしか掲載しなかったけれど、ほんとは実装ファイルもあるのよ。

ヘッダーが「triangle.h」だから、実装は「triangle.c」ですかね。

そういうこと!ちなみに、中身はこんな感じ。
triangle.c
#include "triangle.h"
double TriangleArea(const Triangle *triangle) {
return triangle->base * triangle->height / 2.0;
}

それで、今回のプログラムは間違ってはいないんですよね。

間違いとまでは言えないけれど、ぜひ入れておいてほしい記述がないの。

ヘッダーファイルに何かを足せばいいんですね。ええと……

ヘッダーファイルは、いつでも、どこからでもインクルードできれば便利ですね。