C语言多文件编译的例子
时间:2014-08-23 00:08 点击:次
在 VC6.0 中新建一个工程,添加 fun.c、main.c 两个源文件和 fun.h 一个头文件,内容如下:
fun.c
- #include <stdio.h>
- int fun1(){
- printf("The first function!\n");
- return 0;
- }
- int fun2(){
- printf("The second function!\n");
- return 0;
- }
- int fun3(){
- printf("The third function!\n");
- return 0;
- }
#include <stdio.h> int fun1(){ printf("The first function!\n"); return 0; } int fun2(){ printf("The second function!\n"); return 0; } int fun3(){ printf("The third function!\n"); return 0; }
fun.h
- #ifndef _FUN_H
- #define _FUN_H
- extern int fun1(void);
- extern int fun2(void);
- extern int fun3(void);
- #endif
#ifndef _FUN_H #define _FUN_H extern int fun1(void); extern int fun2(void); extern int fun3(void); #endif
main.c
- #include <stdio.h>
- #include <stdlib.h>
- #include "fun.h"
- int main(){
- fun1();
- fun2();
- fun3();
- system("pause");
- return 0;
- }
#include <stdio.h> #include <stdlib.h> #include "fun.h" int main(){ fun1(); fun2(); fun3(); system("pause"); return 0; }
The first function!
The second function!
The third function!
上面的例子,函数定义放在 fun.c 文件中,在 fun.h 头文件中对函数进行声明,暴露接口,然后在主文件 main.c 中引入 fun.h。
注意:编译是针对单个 .c 文件的,如果项目中有多个 .c 文件,需要逐一编译,然后链接,或者使用“组建 -> 全部重建”选项,一次性编译并链接所有文件。
多文件编程时,只能有一个文件包含 main() 函数,因为一个工程只能有一个入口函数。我们把包含 main() 函数的文件称为主文件。
可以在其他 .c 文件中对函数进行定义,在 .h 中对函数进行声明,只要主文件包含进相应的头文件,就能使用这些函数。实际开发中,很少有简单到只有几十行代码的C语言项目,合理的组织代码和文件,是开发大中型项目的必备技能。
为了更好的组织各个文件,一般情况下一个 .c 文件对应一个 .h 文件,并且文件名要相同,例如 fun.c 和 fun.h。如果 fun.c 使用到了 fun.h 的宏定义、类型定义等,还需要在 fun.c 中 #include "fun.c"。
.c 文件主要包含各个函数的定义,.h 文件声明函数原型,向外暴露接口,供主文件调用。另外也可以在 .h 中包含宏定义、类型定义。
注意:.h 文件头文件中不能有可执行代码,也不能有变量定义,只能有宏、类型( typedef,struct,union,menu )定义和变量、函数的声明。
这倒不是说在 .h 中定义变量或函数会有语法错误,实际上#icnlude机制很简单,就是把#include所包含的文件中的内容直接复制到#include所在的位置并替换#include语句。但是这样做不符合模块化编程的惯例,也不利于文件的组织,不利于二次开发,不利于团队协作。
头文件要遵守幂等性原则,即可以多次包含相同的头文件,但效果与只包含一次相同。
可以使用下面的宏防止一个头文件被重复包含。
- #ifndef MY_INCLUDE_H
- #define MY_INCLUDE_H
- //头文件内容
- #endif
#ifndef MY_INCLUDE_H #define MY_INCLUDE_H //头文件内容 #endif
顶一下
(28)
93.3%
踩一下
(2)
6.7%
上一篇:C语言头文件深入理解
下一篇:动态链接库(dll)简介
相关内容:
- QQ群
-
微信
- 返回首页
- 返回顶部