Bri*_*ndy 43
iostream.h被提供它的那些编译器弃用,iostream是C++标准的一部分.
为了明确说明iostream.h,在当前的C++标准(INCITS ISO IEC 14882 2003)中根本没有提及.
编辑:正如@Jerry所提到的,当前的标准不仅没有提到它,而且没有C++的标准提到它.
Dav*_*ley 14
iostream是标准标题.iostream.h是一个非标准的标题,在预标准C++中非常常见,是iostream从中演化而来的.iostream.h仍然很常见,大概是用于旧程序.
如果您的实现具有iostream.h的工作副本,则它可能与iostream相同,除了iostream中的所有内容都在std命名空间中,而iostream.h通常在命名空间之前,并且不使用它们.
如果您的实现同时具有iostream和iostream.h,则iostream可能会像以下一样工作:
namespace std
{
#include <iostream.h>
}
Run Code Online (Sandbox Code Playgroud)
虽然这不一定是它的写法.
小智 8
首次创建C++时,标准运行时库中的所有文件都以.h结尾.生活是一致的,而且很好.cout和cin的原始版本生活在iostream.h中.当语言由ANSI委员会标准化时,他们决定将运行时库中的所有函数移动到std命名空间(这通常是一个好主意).然而,这提出了一个问题:如果他们将所有函数移动到std命名空间,那么旧的程序都不会再工作了!
为了解决这个问题,在保持旧程序的向后兼容性的同时,引入了一组使用相同名称但缺少.h扩展名的新头文件.这些新的头文件在std命名空间内具有所有功能.这样,包含的旧程序
#include <iostream.h>不需要重写,而较新的程序可以#include <iostream>.当您包含标准库中的头文件时,请确保使用非.h版本(如果存在).否则,您将使用不再受支持的标头的弃用版本.
此外,从C继承的许多在C++中仍然有用的库都被赋予了ac前缀(例如stdlib.h变成了cstdlib).这些库的功能也被移动到std命名空间,以帮助避免命名冲突.
但是,当您编写自己的头文件时,应该为它们提供所有.h扩展名,因为您不会将代码放在std命名空间中.
规则:如果存在,则使用库的非.h版本,并通过std命名空间访问该功能.如果非.h版本不存在,或者您正在创建自己的标题,请使用.h版本
资料来源:https://www.learncpp.com/cpp-tutorial/19-header-files/
| 归档时间: |
|
| 查看次数: |
30692 次 |
| 最近记录: |