[ 1-1 ]
主に宣言を記述するファイルをなんと呼ぶか。
解答例
[ 1-2 ]
実際のプログラムが記述されたファイルをなんと呼ぶか。
解答例
[ 2-1 ]
void InputPeople(People *data) { printf("名前:"); scanf("%s",data->name); printf("年齢:"); scanf("%d",&data->age); printf("性別(1-男性、2-女性):"); scanf("%d",&data->sex); printf("\n"); } void ShowPeople(People data) { char sex[16]; printf("名前:%s\n",data.name); printf("年齢:%d\n",data.age); if (data.sex == 1) { strcpy(sex,"男性"); } else { strcpy(sex,"女性"); } printf("性別:%s\n",sex); printf("\n"); }
このプログラムをヘッダーファイルとソースファイルにまとめなさい。
解答例
[ 3-1 ]
全ての関数を1つのソースファイルに記述しても動作するのに、
わざわざ分割する理由を簡潔に述べよ。
[ 1-1 ]
ヘッダーファイル
問題
[ 1-2 ]
ソースファイル
問題
[ 2-1 ]
/* People.h */ #ifndef __PEOPLE_H__ #define __PEOPLE_H__ #include <stdio.h> #include <string.h> typedef struct { char name[256]; int age; int sex; } People; /* 個人データを入力する */ extern void InputPeople(People *data); /* 個人データを表示する */ extern void ShowPeople(People data); #endif
※分割には様々な流儀があります。/* People.c */ #include "People.h" void InputPeople(People *data) { /* 中身は同じなので省略 */ } void ShowPeople(People data) { /* 中身は同じなので省略 */ }
全ての#includeをソースファイルで行う場合もありますが、
筆者はヘッダーファイル内の方が手間が省けると考えています。
関数のプロトタイプ宣言にはexternを付けない場合もあります。
チーム内で開発する場合そのチームのルールに従いますが、
(そのルールが自分に合わなかったり時代遅れだったとしても、
形式の統一を図ることが最優先です。)
個人開発の場合は己の流儀を決めて使い続けると良いでしょう。
問題
[ 3-1 ]
分割することでプログラムの見通しが良くなり、
再利用や多人数開発が容易になるから。