[C] 如何使用头文件 .h 编译 C 源码
在 C 语言中,头文件或包含文件通常是一个源代码文件,程序员使用编译器指令将头文件包含进其他源文件的开始(或头部),由编译器在处理另一个源文件时自动包含进来。
一个头文件一般包含类、子程序、变量和其他标识符的前置声明。需要在一个以上源文件中被声明的标识符可以放在一个头文件中,使用时在其他源文件中包含该头文件。
头文件作为模块的公共接口,在其中声明函数原型、对象和数据类型。
让我们首先创建一个头文件 add.h:
#ifndef _ADD_H_ #define _ADD_H_ int add(int, int); #endif
其中 #ifndef, #define, #endif 是编译器指令,为了防止重复包含头文件,最好将所有声明置于 #ifndef ... #endif 区块中。_ADD_H_ 是头文件标识符,为了保持唯一性,一般为头文件名大写,并将其中的句号替换为下划线,同时前后各加一条下划线。
然后让我们再创建一个源文件 add.c 来实现 add.h 中声明的函数原型:
#include "add.h" int add(int a, int b) { return a + b; }
至此我们就准备好了一个源码文件 add.c 和一个头文件 add.h,现在你可以在其他 .c 文件中包含头文件 add.h,然后将它链接到 add.c 的链接文件。
现在我们创建一个文件 triple.c,并在其中包含 add.h 头文件:
#include <stdio.h> #include "add.h" int triple(int x){ return add(x, add(x, x)); } void main() { int x; scanf("%d", &x); printf("x=%d\n", triple(x)); }
接下来就是使用 gcc 编译它们,首先编译 .c 源文件为 .o 链接文件:
$ gcc -c triple.c -o triple.o $ gcc -c add.c -o add.o
我们得到两个链接文件 triple.o, add.o。现在让我们将它们链接成可执行文件:
$ gcc triple.o add.o -o triple
让我们测试一下可执行文件 triple:
$ ./triple 12 x=36
总结:头文件是在预编译阶段使用,在预编译时编译器会使用头文件中的内容替换 #include 命令。