关于文件包含的问题.

021850524 2004-01-04 02:58:01
关于文件包含的问题.
准确地讲我也不知道问题应该是叫什么.我在vc下创建了一个windows console工程,然后添加了一个类的声明文件handle.h然后又添加了一个handle类的实现文件handle.cpp,然后写了一个测试文件tsthandle.cpp,在tsthandle.cpp和handle.h中并没有包含handle.cpp的信息,可是为什么能正常工作起来?换句话说就是handle.cpp是怎么和这个工程联系起来的?
三个文件的内容是这样的:
//handle.h
#ifndef HANDLE_H_
#define HANDLE_H_
class handle
{
int a,b,c;
public:
handle();
handle(int x);
~handle();
};
#endif

//handle.cpp
#include "handle.h"
#include <iostream.h>
handle::handle(int x)
{
cout<<"handle(int x) called.\n";
}
handle::handle()
{
cout<<"default handle() called.\n";
}
handle::~handle()
{
cout<<"destructor called.\n";
}

//tsthandle.cpp
#include "handle.h"
int main(int argc,char *argv[])
{
handle A,B(4),C;
return 0;
}
...全文
66 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
skywarship 2004-01-04
  • 打赏
  • 举报
回复
平常我们写程序只会用到一个文件,最多还包含一些自己的头文件(实际上还是一个文件,因为编译的时候自动把头文件的内容加到源文件中了).但是在实际开发的时候是很多人一起来开发一个工程的,这就涉及到多个人的合作 ---- 可以想象,如果这么多人同时操作一个文件会是什么景象,所以工程的源代码会采用多文件的形式.但是采用多文件模式后,单个的开发人员只知道将会用到的外部变量和外部函数并会在自己的头文件中声明,但是他们并不知道要用到的这些代码具体定义在哪一个文件中,所以在编译代码的时候就会出问题.为了解决类似的问题,就有了makefile.实际上makefile定义了一个工程中各个文件间的依赖关系,也就是定义了编译的时候所要编译的文件的先后顺序.在实际使用中,makefile是通过一个文本配置文件(一般就取文件名为Makefile)和一个通用的命令来实现的.具体的语法规则和命令行规则可以在网上找到,介绍这个的很多的(最简单的方法就是打开编译器自动生成的makefile文件看看).
021850524 2004-01-04
  • 打赏
  • 举报
回复
另外,makefile到底是什么呀,我总是听别人说.帮忙详细讲讲.
021850524 2004-01-04
  • 打赏
  • 举报
回复
哦,知道了.多谢.
skywarship 2004-01-04
  • 打赏
  • 举报
回复
楼上的对,头文件的包含是IDE自动做的,当然,手动改也可以.用VC的话,在左边的Files书签中可以自由添加需要包含的头文件
wangyangcheng 2004-01-04
  • 打赏
  • 举报
回复
樓上的老兄說得沒錯。
比如你在Linux GCC下面編譯的話就必須說明哪個頭文件和這個實現文件相關的﹕
gcc a.h b.h c.cpp -lstdc++ -o c
neptunez 2004-01-04
  • 打赏
  • 举报
回复
handle.h, handle.cpp根据名字一样联系起来的,是编译器自动作的
Elever 2004-01-04
  • 打赏
  • 举报
回复
vc自动填写了makefile,而且不用你参与
你找出来看看就晓得了

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧