发现有很多童鞋学了一年半载的C语言还不会多文件编程。很多人到现在一个程序都只有一个源文件(main.cpp或mian.c)。甚至连我的室友大飞哥(我们都大二下学期了)昨天也问我怎么做。其实C语言的多文件并不神秘。哥今天姑且装B一回,说说怎么多文件编程,顺便自己也小结一下。

说明:我用的编程工具为devc++,vc6.0也类似。不过vc.6.0会强迫你建工程,不太方便。

跟着我一步一步来,很简单的哦!

现在先写一个简单的程序。保证学过C语言的你都能看懂。


在DEV-C++下编辑下面的程序:

#include<stdio.h>
#include<stdlib.h>
void func1();     //函数声明
void func2();     //函数声明
void func3();     //函数声明
int main()
{
    printf("hello world!\n");
    func1();
    func2();
    func3(); 
    system("pause");
    return 0;
} 
//函数实现
void func1() 
{
     printf("我是函数1\n");
 }
void func2()
{
     printf("我是函数2\n"); 
 } 
void func3()
{
     printf("我是函数3\n"); 
     } 

这个程序够简单吧!运行结果如下:



        这个程序所有的函数实现都在同一文件中,代码量很少,所以你能够看懂。假如代码量很多时,你会发现这样的程序调试很费力。

为了体现C语言模块化的编程思想,我们可不可以将上面3个函数func1,func2和func3的实现单独放在一个文件中呢?答案是肯定的。

初级方案:3个函数的声明和实现放到一个文件中,再在main函数中调用。

在DEV-C++中编辑一个.h文件(这里命名为myfile.h)并保存。(编辑完一定要保存哦!)

//myfile.h
void func1()
{
     printf("我是函数1\n");
 }
void func2()
{
     printf("我是函数2\n"); 
 } 
void func3()
{
     printf("我是函数3\n"); 
     } 

再编辑我们的main.c文件。(注意main.c文件要和我们的myfile.h文件放在同一目录下)

//main.c 
#include<stdio.h>
#include<stdlib.h>
#include"myfile.h" //注意,这里包含了我们自己写的头文件 
int main()
{
    printf("hello world!\n");
    func1();
    func2();
    func3(); 
    system("pause");
    return 0;
} 
点击编译运行,结果如下:

   和上面的结果一样吧!

实际上#icnlude机制很简单,就是把#include所包含的文件中的内容直接复制到#include所在的位置并替换#include语句,所以上面的程序和下面的程序是等价的。

//main.c 
#include<stdio.h>
#include<stdlib.h>
//函数实现 
void func1()
{
     printf("我是函数1\n");
 }
void func2()
{
     printf("我是函数2\n"); 
 } 
void func3()
{
     printf("我是函数3\n"); 
     } 
int main()
{
    printf("hello world!\n");
    func1();
    func2();
    func3(); 
    system("pause");
    return 0;
} 

怎么样,简单吧!

不过模块化得编程提倡在.h文件中只包含一些声明,而我们却在myfile.h中放进了3个函数的实现。一般提倡把函数的实现放到另一个.c或.cpp文件中。

所以我们可以修改如下(把原来的两个文件变成3个文件):


修改版

mian.c文件:放main函数

myfile.h:3个函数的声明

myfile.c:3个函数的实现

在dev-c++下建一个工程:(一定要建工程)


创建工程时选择工程类型时,选择第二个“Console Application”

建好工程后,我们可以看到,系统已经为我们在mian.c文件中编辑好了部分代码,同时工程1目录下也只有一个mian.c文件

这时我们再新建myfile.h文件

在弹出来的对话框中选择Yes


接下来重命名


在弹出的对话框中,输入myfile.h


接下来在myfile.h中输入3个函数的声明:

//这里只有3个函数的声明 
void func1(); 
void func2(); 
void func3(); 


接下来按照上面的方法新建myfile.c文件

注意重命名时输入myfile.c,并在myfile.c中输入3个函数的实现


最后修改mian.c文件中的代码


最后点击编译运行,结果如下:

简单吧!一个简单的多文件工程就产生了。


代码量很少的时候不需要这么做,这里仅仅是为了演示!


其实多文件编程还涉及到作用域、命名空间、程序的编译过程。这里只是一个初级版本。下回还有讲解!


水平有限,欢迎交流!




-------------------------2016.11.24 添加----------------------

这系统的后续文章终于出来了:菜鸟攻略–C语言多文件编程初探(二):使用 gcc 手动编译多文件 C 程序 

欢迎阅读!!!





Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐