2.1.2 编译预处理与新旧标准

    以符号#开头的行,称为编译预处理行,代码2.1中使用了#include编译指令,其作用是在编译之前将iostream文件的内容添加到程序中,iostream设置了C++的输入输出环境,如cin和cout是在iostream中定义的C++标准输入、输出设备标识符,endl是iostream中定义的换行符。关于编译预处理的详细介绍请参考第19章。

    注意

    使用cin和cout进行输入和输出时,程序中必须包含iostream文件(对旧式编译器,程序中应包含iostream.h文件)。

    前面已经讲过,C++语言是C语言的一个超集,早期的C和C++的头文件都采用扩展名为.h形式,随着C++的发展,关于头文件的标准也在不断地变化。图2.1给出了新旧标准的对比,C++一栏中灰色区域代表纯粹的C++头文件,白色区域代表C头文件,现在,对老式的C文件头文件保留了.h扩展名(C++程序仍可使用这种文件);而C++的头文件去掉了扩展名。有些C头文件(如图2.1中的X2.h)被转换成C++头文件,去掉了扩展名,并在文件名称前加上了前缀C(表明来自C语言),对应于图2.1中的网格状区域(CX2)。较旧的编译器可能只支持旧标准格式,符合ANSI/ISO C++最新标准的编译器既支持旧标准格式,又可以使用新的头文件格式,对纯粹的C++头文件来说(如iostream),去掉扩展名.h并不仅仅是形式的变化,没有.h的头文件使用了名称空间机制。