単連結リストの整列 #101 ガードは付けておかないと

インクルードガードは必要だよね。

school_record.h
#ifndef SCHOOL_RECORD_H_INCLUDED
#define SCHOOL_RECORD_H_INCLUDED

typedef struct tag_school_record school_record_t;
typedef struct tag_grade grade_t;

school_record_t *school_record_new(const char *name, const grade_t *maths, const grade_t *physics);
void school_record_dispose(school_record_t *rec);
const char *school_record_get_name(const school_record_t *rec);
const grade_t *school_record_get_maths(const school_record_t *rec);
const grade_t *school_record_get_physics(const school_record_t *rec);

extern const grade_t * const GRADE_A;
extern const grade_t * const GRADE_B;
extern const grade_t * const GRADE_C;

int grade_compare(const grade_t *g1, const grade_t *g2);

#endif /* SCHOOL_RECORD_H_INCLUDED */

プラグマでなく標準で多重読み込み防止の機能を規定する予定はないのだろうか?