x.h:
class a
{
...
};x.cpp:
#include "x1.h"//上面我定义了一个类,但是我在x1.cpp中要使用这个类,因此我在
x1.cpp加入
#include "x.h"
这样为什么没有造成重定义错误?还有这种加#include"x1.h"是属于什么连接:外连接吗?
class a
{
...
};x.cpp:
#include "x1.h"//上面我定义了一个类,但是我在x1.cpp中要使用这个类,因此我在
x1.cpp加入
#include "x.h"
这样为什么没有造成重定义错误?还有这种加#include"x1.h"是属于什么连接:外连接吗?
如果你是在彼此的头文件中包含对方头文件倒是有可能发生, 如果你在每个头文件中加入
#if !defined(YOUFILEMECRO)
#define YOUFILEMECRO
////
// 头文件
////
#endif
可能也不会出现,没试过:)
x1.cpp加入
#include "x.h"你在x1.cpp中并不是使用这个类,x1.cpp是这个类实现部分的文件,x.h是这个类定义部分的文件(头文件),使用类时要实例化。
以下是我理解的#include:
它并不是什么连接,而是将x1.h的内容“包含”进来。也就是说,在编译预处理时,编译
器是将x1.h的全部内容复制到x1.cpp中,作为一个源程序来编译,得到一个目标(.obj)文件。
所以,x1.h也是源文件的一部分。