关于头文件的包含有关问题

关于头文件的包含问题
我定义了2个头文件,分别叫做v3516.h 和 mangager.h ,在两个头文件里面实现了2个类和一些操作,分别是class v3516
class mangager,在这两个类文件里面还定义和实现了一些接口。
  下面是我对这两个头文件的使用:我在v3516.h里面包含了 mangager.h,在mangager.h里面也包含了 v3516.h 。编译没有问题,顺利通过。 然后我再main函数里面 加了mangager.h 就出现若干个错误了。去掉就好了。
  不知道是什么原因,难道是一个 头文件不能被2次包含吗???????????????、、、
 

------解决方案--------------------
第一个盒子里面装着第二个盒子,第二个盒子里面装着第一个盒子
请问,这两个盒子能不能实际出现在这世界上?

头文件互相include是绝对错误的事情
之所以一开始没错误,是因为头文件只是“声明”,在被c/cpp源文件include之前,它们不参与编译,哪怕你include一大堆不存在的文件也没关系
一旦被源文件include,此时头文件实际生效,编译器立刻发现头文件互相include并报错