C++中带.h与不带.h的头文件

在C++的include包含头文件的指令中,包含的头文件可以带后缀名.h也可以不带,例如

#include

#include
那么这两种写法到底有什么不同呢?

1 C++的标准化

1.1 标准化的历史

C++是在C语言的基础上开发出来的,是C语言的超集。1980年,C++的早期版本诞生,称作带类的C(C with Classes)。1983年Rick Mascitti建议将带类的C命名为C++(C Plus Plus)。1983年之后,C++使用的爆炸式增长。传统的面向用户遇到的问题及基于同事间讨论的演化方式已无法满足需求,迫切需要对C++语言进行标准化。1998年ISO C++标准通过ISO评审成为国际标准,称作C++98。

1.2 标准化的主要内容

标准化后的C++增加了命名空间的概念,将原来声明在全局空间下的标识符声明在了namespace std下。

标准化后的C++还统一了C++头文件的各种后缀名,例如.h、.hpp、.hxx等。标准化之前的头文件就是带后缀名的文件,标准化后的头文件就是不带后缀名的文件。C++ 98 规定用户应使用新版头文件,对旧版本头文件不再进行强制规范,但大多数编译器厂商依然提供旧版本头文件,以求向下兼容。

2 带.h与不带.h的头文件

从“1 C++的标准化”中可以看到,带.h的头文件是标准化之前的C++头文件;不带.h的头文件是标准化之后的C++头文件。所以,对于标准化之后iostream头文件,最好声明使用std命名空间:

#include 

using namespace std;

而对于标准化之前的头文件iostream.h,则直接使用

#include 

即可。

需要注意的是,从VS2005开始,不再支持使用标准化之前的头文件。

3 标准化之后的C语言头文件

为了和C语言兼容,C++标准化过程中,原有C语言头文件标准化后,头文件名前带个

c字母。例如,标准化之前的stdio.h头文件,在标准化之后变为cstdio。

#include 

变为

#include 

 

你可能感兴趣的:(C++基础)