在kernel/proto.h中,MINIX 3定义了两个正向声明struct proc
和struct timer
。然而,参数中的许多类型信息都丢失了。完全缺少诸如clock_t
、U16_t
、tmr_func_t
和message
之类的示例。文件中似乎也没有任何#include
语句,那么编译器怎么会不抱怨呢?
查看kernel/kernel.h,很明显,一些头文件的包含顺序很重要。
/* Important kernel header files. */
#include "config.h" /* configuration, MUST be first */
#include "const.h" /* constants, MUST be second */
#include "type.h" /* type definitions, MUST be third */
#include "proto.h" /* function prototypes */
#include "glo.h" /* global variables */
#include "ipc.h" /* IPC constants */
#include "debug.h" /* debugging, MUST be last kernel header */
并不是每个头文件都会包含它所依赖的其他头文件。学会使用本地搜索工具。此外,在谷歌上搜索clock_t
可能会很有启发性。您提到的大多数其他类型似乎都不是标准的C库类型。
头文件包含在其他头文件中,用于验证所提到的缺失类型。