函数原型
使用#define或const定义的符号常量
结构声明
类声明
模板声明
内联函数
但是有一件事必需要清楚,就是上述的各种声明只能声明一次,声明多次编译器会报错.对于这个问题,现在有两种解决方法:
1.在头文件的开始处加上预编译指令: #pragma once.这个指令确保此头文件只能被#include一次.
2.使用宏技术:即:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
第1种方法不能确保在所有的编译器下通过,属于相对比较新的用法.第2种方法可以在所有的编译器下通过,其理论是通过定义了一个宏来使编译器只声明一次.
对于全局变量,通常是不能放在头文件中的,这样在多个cpp文件#include这个头文件后会引起重复声明错误(即使使用上面的第2种技巧在VS2005的编译器下也是如此,我有些迷惑),那么通常的方法是在某个cpp文件中声明全局变量,然后在头文件中用extern来声明变量,以通知编译器此变量属于其它cpp文件.但是,也可以通过宏这个技巧将全局变量的声明放到头文件中:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)