C++ 标准头文件与C头文件区别与联系

来源:互联网 发布:mastercam铣螺纹编程 编辑:程序博客网 时间:2024/05/18 00:42
    摘自其他作者的博客,外加自己的整理。
1、<>和""的区别:用前者的话,在编译时系统会在用户自定义的库文件里去找,如果找不到再到系统库文件里找。后者采用相反顺序。
2、
一般一个带“.h” 扩展名的库文件,比如iostream.h,是延续C语言的,为了兼容C。在新标准的库中都有一个不带".h"扩展名
    的相对应的 标准库头文件,所谓标准库头文件就是从理论上讲,所有平台的编译器都会支持的头文件。区别:后者以c开头,
    如<csting> ;有很多改进之处,比如后者的东西都放进了“std”名字空间中,所以使用时都需要用std命名空间。
    
c的头文件xxx.h,在c++里被统一归纳到了namespace std命名空间内, 实现手段如下:
    string.h --> cstring :
     
namespace std      {              #include <string.h>      }  

     ①<string> 是C++标准库定义string类(严格说是basic_string模板)的头文件; 
     ②<cstring> 则是C++语言兼容于C的,声明那些C语言字符串处理函数(如strcpy,strcmp,strcat等)的头文件,它移植了C中的
        <string. h>,成为后者的C++版本。
     
C开头且后面没有.h的头文件,是C++保持原来C标准库的头文件。 <cstring> 跟C语言的 <string.h> 的一个不同是cstring中所有东西 
        都定义在“std”这个命名空间中, 运行<cstring>需要添加std命名空间。 
     现在理清 string.h string cstring 这三个头文件的区别:
     <string.h>是旧的C头文件,对应的是基于char* 的字符串处理函数。
     <string>是包装了std的C++ 头文件对应的是新的string 类。
     <cstring>是对应于C头文件的std版本,
运行<cstring>需要添加std名字空间。 
 
Cstring 是MFC中的类。
3、
C++标准化过程中,其中一个环节,解决了以下问题:
    
①C++增加了名称空间概念,借以将原来声明在全局空间下的标识符声明在了namespace std下。
    
统一C++各种后缀名,如.h、.hpp、.hxx等。标准化之前的头文件就是带后缀名的文件,标准化后的头文件就是不带后缀名的 
     文件。C++ 98 规定用户应使用新版头文件,对旧版本头文件不在进行强制规范,但大多数编译器厂商依然提供旧版本头文件,
     以求向下兼容。
原创粉丝点击