【干货】??C语言在Dev-C++下的多文件编译
- 文件-新建-项目
(放在一个单独的文件夹内,加下来的源文件都放在一起)
- 选择控制台文件、C项目->给项目起个名字->确定(我写的是C语言控制台文件,根据需要 灵活选择)
- 现在,项目管理内是包含一个main.c源文件,就是我们最主要的代码
- 新建源代码,在项目中添加新单元
- 现在写一个包含全局变量(甚至模板结构体等等)的头文件,是最主要的头文件。
每个模块的功能都涉及这个头文件,也就是说每个.c文件都可以#include “HEAD.h”。
将它命名为HEAD。//有必要的话请跳过这一步,我可能有一丢丢乱
?类似这样?
?保存为头文件格式(*.h)
- 再新建功能函数的原型及头文件(注意命名一致)
?比如这样? - 此时,在main.c中只需要包含function.h即可
编译运行,nice!
PS:
在写博文的时候还遇到一个问题,一开始我的HEAD.h是这样写的
编译器给我报错如下:
我寻思我这不是用了ifndef吗为啥还重定义?于是上网查了原因。
度娘如是说:
1>首先声明是“declaration”,定义是“definition”;
2>不同的C文件是分别进行编译的,另一个C语言里的#define与其他C文件无关。也就是说有可能两个c文件中都是not define,导致出现了多个int i;
3>在C语言中,若是遇到多个int i,则自动认为其中一个是定义,其他的是声明;
4>#ifndef无法避免变量的重复定义,使用的目的是节省编译时间和资源,提高代码效率。
因此,在头文件中“只声明,不定义”,如果实在要写全局变量的话,就写成 extern int i。
以上。