`
xinklabi
  • 浏览: 1578341 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

C/C++头文件一览

阅读更多

C/C++头文件一览

C、传统 C++

#include <assert.h>    //设定插入点
#include <ctype.h>     //字符处理
#include <errno.h>     //定义错误码
#include <float.h>     //浮点数处理
#include <fstream.h>    //文件输入/输出
#include <iomanip.h>    //参数化输入/输出
#include <iostream.h>   //数据流输入/输出
#include <limits.h>    //定义各种数据类型最值常量
#include <locale.h>    //定义本地化函数
#include <math.h>     //定义数学函数
#include <stdio.h>     //定义输入/输出函数
#include <stdlib.h>    //定义杂项函数及内存分配函数
#include <string.h>    //字符串处理
#include <strstrea.h>   //基于数组的输入/输出
#include <time.h>     //定义关于时间的函数
#include <wchar.h>     //宽字符处理及输入/输出
#include <wctype.h>    //宽字符分类

//////////////////////////////////////////////////////////////////////////

标准 C++ (同上的不再注释)

#include <algorithm>    //STL 通用算法
#include <bitset>     //STL 位集容器
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>     //复数类
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>      //STL 双端队列容器
#include <exception>    //异常处理类
#include <fstream>
#include <functional>   //STL 定义运算函数(代替运算符)
#include <limits>
#include <list>      //STL 线性列表容器
#include <map>       //STL 映射容器
#include <iomanip>
#include <ios>       //基本输入/输出支持
#include <iosfwd>     //输入/输出系统使用的前置声明
#include <iostream>
#include <istream>     //基本输入流
#include <ostream>     //基本输出流
#include <queue>      //STL 队列容器
#include <set>       //STL 集合容器
#include <sstream>     //基于字符串的流
#include <stack>      //STL 堆栈容器    
#include <stdexcept>    //标准异常类
#include <streambuf>    //底层输入/输出支持
#include <string>     //字符串类
#include <utility>     //STL 通用模板类
#include <vector>     //STL 动态数组容器
#include <cwchar>
#include <cwctype>

using namespace std;

//////////////////////////////////////////////////////////////////////////

C99 增加

#include <complex.h>   //复数处理
#include <fenv.h>    //浮点环境
#include <inttypes.h>  //整数格式转换
#include <stdbool.h>   //布尔环境
#include <stdint.h>   //整型环境
#include <tgmath.h>   //通用类型数学宏

 

---------------------------------------------------------------------------------------------------------

补充:

经常在CSDN以及其他之类的技术论坛上问关于C++ 头文件的问题。提出这些问题的往往就是那些刚学C++的新手。当初我是菜鸟的时候也问过类似的问题。

 

    现在来看看下面两个include:

 

    #include<iostream>     // 这个就是1998年标准化以后的标准头文件

 

    #include<iostream.h>       // 这个就是标准化以前的头文件

 

 

 

    更本质上的区别就是iostream把标准C++库的组件放在一个名位std的namespace里面。而相对的iostream.h则将这些标准组件放在全局空间里,同时在标准化以后旧有的C标准库也已经经过改造了。

 

    看看下面这两个头文件

 

    // 标准化后经过改造的C的标准库,所有的组件都放在了std中

 

    #include<cstdio>          

 

    // 标准化以前C++中的C标准库

 

    #include<stdio.h>

 

    // 在看看这个头文件C标准库下 基于char* 的字符处理函数库

 

    #include<string.h>

 

    // 在标准化以后他变成了这样

 

    #include<cstring>

 

    // 但是很多朋友还看见过这个字符串处理函数库,他包含了新的string class

 

    #include<string>

 

 

 

    经过了标准委员会如此大规模手术后,在98年以前出品的C++编译器(BC3.0,BC5.0)上能顺利通过编译的源文件,在支持新标准的编译器上可能无法顺利通过编译也就是很正常的事了。

 

 

 

[起因]

 

    在回过头来看看标准程序库,这个程序库涵盖范围相当广大,提过了许许多多好用的功能。正是因为这样标准程序库中class的名称和函数名与第三方提供的程序库中的class名或是函数名发生名字冲突的可能性大大增大。为了避免这个问题的发生,标准委员会决定将标准程序库中每一样东西都放在namespace std中。但是这么做同时有引来了一个新的问题。很多C++程序代码依赖那些已经存在很多年的C++ “准”标准程序库(C++迟迟未标准化才导致这些情况的发生),例如iosteam.h,complex.h等等。

 

 

 

    为了解决这个新出现的问题,标准化委员会决定设计一些新的头文件名,给那些穿上std外衣的组件所使用。把C++头文件的.h去掉,于是就有前面出现的iostream,同样C的头文件也做了相同的处理,同时在前面加上了一个字母c,以表示是C的头文件(感觉上有中种族歧视的感觉)。同时标准化委员会声明就有的C++头文件将不再列于被支持的名单之中了,而旧有的C头文件为了满足“对C的兼容性”这个古老契约,仍然将继续存活下去。

 

但是,那些编译器厂商不可能去推翻他们客户的旧有编译器(也跟本不会去这么做),所以那些旧有的C++头文件仍然苟延残喘的活了下来,并不断的扰乱那些C++新兵的心智。

 

 

 

    下面就是现在大多数C++开发工具表示头文件的组织状态:

 

1.    旧的C++头文件 比如iostream.h,他们虽然被标准化委员会所抛弃,但由于各大厂商为了各自的商业利益仍然将继续存活下去,这些头文件的内容将不处于namespace std中。

 

2.    新的C++头文件如iostream虽然提供了和旧有头文件相同的功能,但他的内容都并入了namespace std中,从而有效避免了名字污染的问题。

 

3.    标准C的头文件如stdio.h继续获得支持,这类文件的内容并未放在std中。

 

4.    C函数库的技能也有对应的新式C++版本,起名称类似cstdio,这类头文件的内容也有幸穿上了std的外衣。

 

 

 

其实标准化以后的标准程序库的改动并不只有这些而已,很多的标准化组件都被“tamplate化”。其中就有元老级人物iostream。标准程序库的问题并不是用一篇,两篇文章就可以说清楚的。如果你像进一步的了解C++的标准程序库的话,你可以看看侯先生的《C++标准程序库》。

 

 

 

 

 

[参考文献]

 

    Stanley B.Lippman著 潘爱民等译,C++ Primer,3rd Edition,中国电力出版社,2002年。

 

    Scott Meyers著 侯捷译,Effective C++,2nd Edition,华中科技大学出版,2001年

分享到:
评论

相关推荐

    C与C++头文件一览.doc

    ### C与C++头文件一览知识点详解 #### 一、C/C++头文件概述 C 和 C++ 是两种广泛使用的编程语言,它们共用了许多核心功能。为了方便开发者调用预定义的功能,这两种语言提供了丰富的头文件。这些头文件不仅为...

    本人精心收集,c++头文件一览

    ### C/C++头文件一览知识点解析 #### 一、C/C++基础头文件 在C/C++编程语言中,头文件扮演着极其重要的角色,它们为程序员提供了丰富的库函数和宏定义,使得开发者能够轻松地完成各类编程任务。下面将详细介绍这些...

    C C++头文件一览.pdf

    标题“C C++头文件一览.pdf”明确指出文档内容涉及C语言和C++语言中的头文件介绍。头文件在C/C++编程中扮演着极其重要的角色,它们通常包含了预处理器指令、宏定义、类型声明、函数原型等,用于在多个源文件之间共享...

    C_C++头文件一览.pdf

    ### C/C++头文件概述 在C/C++编程语言中,头文件是非常重要的组成部分,它们提供了函数原型、宏定义以及类型定义等,使得程序能够调用标准库中的功能。本篇将详细介绍C/C++中的一些关键头文件及其作用,特别关注C99...

    C++头文件一览,用于编程。

    C++头文件一览,用于编程。C/C++头文件一览 C、传统 C++ #include &lt;assert.h&gt; //设定插入点 #include &lt;ctype.h&gt; //字符处理 #include &lt;errno.h&gt; //定义错误码 #include &lt;float.h&gt; //浮点数处理

    C和C++头文件对比一览

    ### C和C++头文件对比一览 #### 引言 本文旨在探讨C语言与C++语言在头文件方面的异同之处。随着C++的发展和完善,其标准库经历了一系列的重大变革,尤其是在1998年标准化之后。这些变化不仅体现在命名习惯上,还...

    CC++头文件一览.doc

    C/C++头文件一览 C/C++头文件是C/C++语言的基础组成部分,它们提供了大量的函数和宏定义,用于实现各种常见的功能,例如字符串处理、数学运算、文件输入/输出等等。下面是常用的C/C++头文件一览: 1. assert.h:...

    C++头文件一览.zip

    本资料"**C++头文件一览.zip**"提供了一份关于C++常用头文件的详细清单,解压后为DOC格式,对于学习和参考C++标准库非常有帮助。 1. ****: 这是最常见的头文件,用于输入输出操作,包括`cin`(标准输入)和`cout`...

    C_C++头文件一览

    ### C/C++头文件概述与知识点详解 在C/C++编程语言中,头文件(header files)扮演着至关重要的角色,它们包含了预定义函数、宏定义以及数据类型等的声明,使得程序员能够轻松调用标准库中的功能。下面将根据提供的...

    C++头文件一览.txt

    #### 一、标准C/C++头文件 在C++编程语言中,头文件是实现各种功能的重要组成部分。它们为程序员提供了访问标准库中的函数、类和宏定义的方法。下面我们将详细介绍一些常用的C/C++标准头文件。 ##### 1. `...

    C++头文件一览---C++和传统C头文件说明

    ### C++与传统C语言头文件详解 在C++编程中,头文件是代码组织的重要组成部分,它们包含了函数声明、宏定义以及类型定义等。本文将深入探讨一系列C++及传统C语言中的常用头文件,并解释这些头文件的主要功能及其在...

    C++头文件大全头文件一览

    根据给定的文件信息,我们可以深入探讨C++头文件中的关键知识点,这些头文件涵盖了从基本输入输出到复杂数据结构和算法的各种功能。下面将详细解释每个头文件的主要用途和包含的重要函数或类。 1. **标准C库头文件*...

    C++头文件一览

    C++头文件一览 C++ 语言中,头文件是编译器在编译过程中需要引用的文件,它们提供了各种函数、宏、变量和类型的定义。这些头文件可以分为传统 C++ 头文件和标准 C++ 头文件两大类。 传统 C++ 头文件: 这些头文件...

    C++头文件一览(Word格式)

    以下是对"**C++头文件一览**"这一主题的详细解析。 1. **标准库头文件** - `&lt;iostream&gt;`:用于输入输出操作,如`std::cin`和`std::cout`。 - `&lt;fstream&gt;`:处理文件输入输出,如`std::ifstream`和`std::ofstream`...

    C++头文件一览表.pdf

    C++头文件一览表 C++头文件是一组预定义的函数和变量的集合,用于提供各种功能,例如数学运算、输入输出、进程控制、存储管理等。本文档将详细介绍C++头文件中的函数和变量,并对其进行分类和解释。 数学子程序 *...

    C C++头文件一览

    以下是对给定文件中提到的C和C++头文件的详细解析,旨在帮助开发者更好地理解和应用这些资源。 ### C语言头文件 #### 1. `&lt;assert.h&gt;` 提供断言机制,用于程序调试阶段检查条件是否满足,若不满足则终止程序并给出...

Global site tag (gtag.js) - Google Analytics