1.8.2 头文件

一个操作系统项目通常包括多个目录,每个目录都含有许多.c文件,这些文件中存有系统某个部分的代码,而一些.h头文件则包含供一个或多个代码文件使用的声明以及定义。头文件还可以包括简单的宏,诸如


#define BUFFER_SIZE 4096


宏允许程序员命名常数,这样在代码中出现的BUFFER_SIZE,在编译时该常数就被数值4096所替代。良好的C程序设计实践应该除了0,1和-1之外命名所有的常数,有时把这三个数也进行命名。宏可以附带参数,例如

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元


#define max(a,b)(a>b?a:b)


这个宏允许程序员编写


i=max(j,k+1)


从而得到


i=(j>k+1?j:k+1)


将j与k+1之间的较大者存储在i中。头文件还可以包含条件编译,例如


#ifdef PENTIUM

intel_int_ack();

#endif


如果宏PENTIUM有定义,而不是其他,则编译进对intel_int_ack函数的调用。为了分割与结构有关的代码,大量使用了条件编译,这样只有当系统在Pentium上编译时,一些特定的代码才会被插入,其他的代码仅当系统在SPARC等机器上编译时才会插入。通过使用#include指令,一个.c文件体可以含有零个或多个头文件。