由<string>和<string.h>来谈一谈<头文件名>和<头文件名.h>

本文详细介绍了C和C++中的头文件区别,包括它们的命名习惯、如何避免名称冲突,以及C++标准库的组织方式。文章还讨论了新旧头文件的使用情况及其与标准库的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般来说,.h后缀都是c的头文件,与其相对应的不加.h的都是c++的头文件,比如 #include <iostream.h> 和#include ,前者是c的头文件,后者是c++的。
<string.h>是旧的C 头文件,对应的是基于char*的字符串处理函数;是包装了std 的C++头文件,对应的是新的string 类;
是对应于旧C 头文件的std 版本。

C++标准库很大。非常大。难以置信的大。怎么个大法?这么说吧:在C++
标准中,关于标准库的规格说明占了密密麻麻300 多页,这还不包括标准C 库,
后者只是"作为参考"(老实说,原文就是用的这个词)包含在C++库中。
在归纳标准库中有些什么之前,需要介绍一下它是如何组织的。因为标准
库中东西如此之多,你(或象你一样的其他什么人)所选择的类名或函数名就
很有可能和标准库中的某个名字相同。为了避免这种情况所造成的名字冲突,
标准库中的一切都被放在名字空间std 中。但这带来了
一个新问题。无数现有的C++代码都依赖于使用了多年的伪标准库(伪标准库没有std这一说)中的功能,
例如,声明在<iostream.h>,<complex.h>,<limits.h>等头文件中的功能。依赖早期伪库的程序代码并不针对使用名字空间std而进行设计,如果使用std 将导致现有
代码不能用,基于此,标准委员会决定为包装到std 的那
部分标准库创建新的头文件名。生成新头文件的方法(也就是解决前边提到的基于早期伪库的现有代码不能使用的问题的方法)是将现有C++头
文件名中的.h 去掉,所以旧的<iostream.h>变成了新的,旧的<complex.h>变成了新的,
等等。对于C 头文件,采用同样的方法,但在每个名字前还要添加一个c。故C 的旧<string.h>变成了新的,旧<stdio.h>变成了新,等等。
最后一
点是,旧的C++头文件是官方所反对使用的(即,明确列出不再支持),但旧
的C 头文件则没有(以保持对C 的兼容性)。实际上,编译器制造商不会停止
对客户现有软件提供支持,所以可以预计,旧的C++头文件在未来几年内还是
会被支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值