购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.8 如何编写多文件程序

本节读者可以先不看,因为暂时还用不到。刚开始学习C语言的时候,从学习知识的渐进角度,编写的都是一些小程序,放在一个文件中就行了,不需要创建多个文件。因此本节等以后用到了再来阅读。

那么什么时候需要创建多个文件呢?为什么要创建多个文件呢?程序一直放在一个文件中不行吗?当程序代码量很大的时候必须将它放到多个文件中!比如一个公司项目往往都是几万、几十万行的代码,这时就不能将所有程序都放在一个文件中了。而是要按功能、模块将它们放到不同的文件中,这样便于调试和维护。而且一个公司项目不可能只有一个人写,都是一群人写,每个人写一个功能模块,最后将所有文件合到一起就是一个项目。

下面列举一个简单的例子,通过这个例子来学习如何在VC++6.0中进行多文件编程。下面所讲内容基于你已经学完后面的“函数调用”和“头文件”的假设。

我们先编写一个程序:


# include <stdio.h>
void Hello(void);
int main(void)
{
    Hello();
    return 0;
}
void Hello(void)
{
    printf("hello world\n");
    return;
}

下面将这个程序放到多个文件中:

1)创建一个main.c文件,在其中编写主函数main(),在main()中调用函数Hello()。

2)创建一个hello.c文件,将Hello()函数的定义写在其中。

3)创建一个hello.h文件,将Hello()函数的声明写在其中。

前面都是创建一个文件,这里为什么创建三个文件呢?创建的这三个文件怎么编译到一起形成一个可执行文件呢?这时就需要新建一个工程,然后将这三个文件都放到这个工程中,这样编译时这三个文件就会自动被编译到一起并生成一个可执行文件了。

首先,单击File→New或直接按快捷键Ctrl+N,弹出新建对话框,如图3-23所示。

图3-23 新建对话框

先来新建一个工程。在图3-23中选择“Projects”,然后选择“Win32 Console Application”。在“Project name”中给工程取名,如myproject,不需要加后缀,因为系统会自动加后缀。然后在“Location”中选择工程的保存路径。其他依照默认设置,然后单击“OK”,弹出如图3-24所示对话框。

图3-24 创建工程类型选择对话框

这个对话框提示要创建什么样的工程。选择“An empty project”,创建空白的工程。然后单击“Finish”,弹出如图3-25所示对话框。

图3-25 工程信息对话框

这个对话框就是提示你创建了一个什么样的工程,直接单击“OK”。这样工程就建好了。这时工程所在路径中就创建了一个myproject文件夹,后面新建的文件都保存在这个文件夹中。如图3-26所示。

图3-26 myproject文件夹中的文件

我们看到其中有一个后缀名为.dsw的文件,以后要打开这个工程直接双击该文件即可。工程打开了,工程中的其他文件就都打开了。

工程建好之后VC++6.0的界面如图3-27所示。

在图3-27中单击“FileView”就可以看到新建的工程了,展开这个工程可看到其下有三个空文件,如图3-28所示。

其中Source Files就是存放.c文件或.cpp文件的;Header Files就是存放.h头文件的。第三个Resource Files可以不要管它,暂时用不到。

工程创建好了,下面就可以在这个工程中新建文件了。怎么新建呢?方法同前面新建文件一样:按Ctrl+N弹出新建文件对话框,然后选择“Files”,界面如图3-29所示。

图3-27 新建工程后的界面

图3-28 新建的工程

图3-29 新建文件对话框

在图3-29中选择“C++Source File”,右边需要注意的是,将“Add to project”前面的勾勾上,然后在下面选择新建的myproject工程。接下来操作一样,在“File”中给文件取名,如main.c。因为后缀是.c,所以要手动添加,默认是.cpp。在“Location”中选择文件保存路径,最好保存在myproject文件夹中,便于管理。然后单击“OK”,这样main.c文件就建好了。创建hello.c时重复上面的步骤就行了。而创建头文件hello.h时在“Files”下要选择“C/C++Header File”,表示创建头文件。右边“File”中的文件名后缀可手动添加.h也可不加,系统默认后缀就是.h。

这样三个文件就建好了,如图3-30所示。

图3-30 添加文件后的工程

新建这三个文件时也可以这样操作:单击菜单栏Project→Add To Project→New,然后打开新建对话框,其他的一样。

接下来就可以分别在这三个文件中写程序了:


/*
    hello.h
*/
# ifndef _HELLO_H_
# define _HELLO_H_
void Hello(void);
# endif
/*
    hello.c
*/
# include <stdio.h> 
void Hello(void)
{
    printf("hello world\n");
    return;
}
/*
    main.c
*/
# include "hello.h"  //自定义目录只能用双引号 
int main(void)
{
    Hello();
    return 0;
}

写完之后直接单击“编译”、“链接”、“执行”,程序就运行起来了。此时打开工程保存路径下的Debug文件夹就会发现,此时里面有两个.obj文件:main.obj和hello.obj。也就是说,在编译时有几个.c文件就会对应生成几个.obj文件,即编译时是分开编译的,最后编译器将所有的.obj文件链接生成一个.exe可执行文件。在单击“编译”时若当前打开的是.h头文件,会弹出对话框提示错误:“Cannot compile the file……no compile tool is associated with the file extension.”,因此要注意。但是如果不单击“编译”直接单击“链接”的话就无所谓了。

其实之前将程序放在一个.c文件中时,也可以用这种新建工程的方式,只是没有必要。因为当只有一个文件的时候VC++6.0会自动提示创建默认的工程。但像本节这样有多个文件的时候就必须要手动创建工程了,因为VC++6.0不会自动创建包括多个文件的工程。 xlxBk00ORzg8yEUdDtsiZIt/TTocpuCT1gzbXLKhSozZXWBgxc4Z7UIa7YS7greu

点击中间区域
呼出菜单
上一章
目录
下一章
×