C++中的头文件一般应该包含哪些东西?该如何解决

C++中的头文件一般应该包含哪些东西?
我是问的最好应该包含什么不是能包含什么.

------解决方案--------------------
可以包含宏定义、类定义、结构体定义、模板定义、全局变量声明,函数声明、内联函数定义等。
不要包含全局变量定义,函数定义。

以上的例子可能列举得还不全。
其实从本质上讲,只需要明白一件事:头文件是用来被别人包含的,因此同一个头文件极有可能被两个以上的cpp文件所包含(比如<iostream>就常被多个cpp文件包含)。因此凡是在两个编译单元重复出现两次会出错的东西都不要放在.h中。