[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 命令。

posted @ 2014-08-15 14:30  iFantasticMe  阅读(7786)  评论(0编辑  收藏  举报