在新的C++标准中,生成新头文件的方法仅仅是将现有C++头文件名中的.h去掉。例如,<iostream.h>变
成了< iostream>,<complex.h>变成了<complex>,等等。对于C头文件,采用同样
的方法,但在每个名字前还要添加
一个c。所以C的<string.h>变成了
<cstring>,<stdio.h>变成了< cst
dio>,等等。
旧的C++头文件是官方所反对使用的(即,明确列出不再支持),但旧的C头文件则没有(以保持对C的兼容性)。
下面是C++头文件的现状:
· 旧的C++头文件名如<iostream.h>将会继续被支持 ,尽管它们不在官方标准中。这些头文件的内容不在名字空间std中。
· 新的C++头文件如<iostream>包含的基本功能和 对应的旧头文件相同,但头文件的内容在名字空间st d中。(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不 一定完全对应。)
· 标准C头文件如<stdio.h>继续被支持。头 文件的内容不在std中 。
· 具有C库功能的新C++头文件 具有如<cstdio>这样的名字。 它们提供的内容和相应的旧C头文件相同,只 是内容在std中。
如果编译器同时支持<iostream>和
<iostream.h> 。如果使用了#include
<iostream>, 得到的是置于名 字空间std下的iostream 库的元素;
如果使用#include <iostream. h>,得到的是置于全局空间的同样的元素。在全
局空间获取元素会导致名字冲突 ,而设计名字空间的初衷正是用来避免这种名
字冲突的发生.
#if _MSC_VER > 1000
#pragma on
ce
#endif
#ifndef _CSTDIO_
#define _CSTDIO_
#ifdef _STD_USING
#undef _STD_USING
#include <stdio.h>
#define _STD_USING
#else
#include <stdio.h>
#endif
#endif
上面就是cstdio的全部内容 (vc6)
好像只是include <stdio.h>而已!!!
旧的C++头文件是官方所反对使用的(即,明确列出不再支持),但旧的C头文件则没有(以保持对C的兼容性)。
下面是C++头文件的现状:
· 旧的C++头文件名如<iostream.h>将会继续被支持 ,尽管它们不在官方标准中。这些头文件的内容不在名字空间std中。
· 新的C++头文件如<iostream>包含的基本功能和 对应的旧头文件相同,但头文件的内容在名字空间st d中。(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不 一定完全对应。)
· 标准C头文件如<stdio.h>继续被支持。头 文件的内容不在std中 。
· 具有C库功能的新C++头文件 具有如<cstdio>这样的名字。 它们提供的内容和相应的旧C头文件相同,只 是内容在std中。
如果编译器同时支持<iostream>和
<iostream.h> 。如果使用了#include
<iostream>, 得到的是置于名 字空间std下的iostream 库的元素;
如果使用#include <iostream. h>,得到的是置于全局空间的同样的元素。在全
局空间获取元素会导致名字冲突 ,而设计名字空间的初衷正是用来避免这种名
字冲突的发生.
#if _MSC_VER > 1000
#pragma on
#endif
#ifndef _CSTDIO_
#define _CSTDIO_
#ifdef _STD_USING
#undef _STD_USING
#include <stdio.h>
#define _STD_USING
#else
#include <stdio.h>
#endif
#endif
上面就是cstdio的全部内容 (vc6)
好像只是include <stdio.h>而已!!!