小疑点,关于include "xxx.h" 写在头文件里呢,还是写在cpp里?

小问题,关于include "xxx.h" 写在头文件里呢,还是写在cpp里??
我从CWinThread继承了一个线程类CExThread   ,我的主对话框是CMainDlg,
那我需要把主对话框的头文件include进我的的CExThread中去

问题是:
我把   include   "MainDlg.h "   放在ExThread.h   里时,老在MainDlg.h   中出现错误,说我的那句:
CExThread*   pThread;有问题,没有写分号啊什么的,总之是胡言乱语。
而我把这句include放进ExThread.cpp里后,就一切都没问题了。请问是为啥啊????

------解决方案--------------------
编译器看到的只有cpp文件,h文件会被编译预处理替换成实际的内容。
------解决方案--------------------
写在.cpp里面。应该是在调用的时候会自动读取.h的内容并置换。
------解决方案--------------------
你是否
a include b, b include c, c include a,
这个问题看你导入什么的.h了,如a.h。 a.cpp肯定要导入a.h,比如其他的.h,你想导如到.h或者是.cpp都没有关系,最主要的是你自己写的.h加上
#pragma once
------解决方案--------------------
最好是写在.c或.cpp文件里
------解决方案--------------------
放在类实现中 .cpp
------解决方案--------------------
都可以,但是一般放在cpp中,主要是为了减少编译时间,因为如果放在.h中,一旦对文件进行了修改,所有包含或者通过头文件间接包含的cpp文件都需要重新编译,时间会比较长.
------解决方案--------------------
一般是放在你用的类的cpp里,在头文件中你要注意别包含乱了,用#pragma once可以
------解决方案--------------------
一般在头文件里声明变量了,并且没有交叉引用的情况就可以与在头文件里。头文件里就没声明变量的话没有必要写要头文件里,写在.cpp里就行了。
------解决方案--------------------
什么地方用时什么地方include