《C++11标准库》4.2头文件( Header File)

在C++标准化过程中,将C++标准库中所有的标识符都定义于 namespace std 内,这样的作法不具备向后兼容性,因为原先的C/C++头文件都将C++标准库的标识符定义于全局范围。标准化过程中有些 class 接口也有了变动。为此,C++standard 特别引入了一套新的头文件命名风格,这么一来组件的供应商便可以通过“提供旧式头文件”来达到向后兼容的目的。

既然有必要重新定义定义标准头文件的名称,C++11正好借此机会把头文件的扩展名做一个规范,以往的头文件的扩展五花八门,例如 包括 .h, .hpp.hxx。所以有一个标准,简介的头文件名称显得十分重要。

如今的头文件名称,便省去了扩展名:

#include<iostream>
#include<string>
#include<vector>

上述这种写法也适用于C标准头文件。但是必须采用前缀字符 c,不再使用扩展名 .h

#include<cstdlib>//相当于#include<stdlib.h>
#include<cstring>//相当于#include<string.h>

对于这些头文件,每一个标识符都被声明于 namespace std 中。

这些命名方式的优点之一是可以区分旧头文件中的 char*C 函数和新头文件中的标准

C++ class string:

#include<string> //C++ class string
#include<cstring> //C类型 char*函数

现实中,大多数系统只是简单的含入一个“名称与 include 语句中的文件完全相同”的文件,所以,在大部分的系统中,C++标准头文件都没有扩展名。

对于头文件的名称,为了向后兼容于C,旧式的C标准头文件任然有效,若有必要你仍然可以使用它们。

#include<stdlib.h>

对于上述头文件包含,标识符被声明于全局范围内,也声明于 namespace std中。事实上,这些头文件的行为类似“先在std中声明的所有标识符,再明确使用 using declaration 把这些标识符引入全局范围”。

对于<iostream.h>这类C++旧式头文件,C++标准以不在支持使用,但是现实中大多数厂商仍会提供他们,以求向后兼容。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值