stdio.h在C ++中不是标准的?

时间:2011-09-29 11:04:47

标签: c++ stdio standard-library

我知道大多数编译器都允许这两个:

#include <stdio.h>

//和

#include <cstdio>

但有人认为&lt; stdio.h&gt;实际上并不是C ++标准。

是真的吗?

4 个答案:

答案 0 :(得分:28)

stdio.h是标准配置,但已弃用。总是更喜欢C ++中的cstdio

  

[n3290: C.3.1/1]:为了与标准C库兼容,   C ++标准库提供了18个C头文件(D.5),但它们的用途是   在C ++中弃用。

     

[n3290: D.5/3]: [示例:标题<cstdlib>确定无误   在命名空间std中提供其声明和定义。它   也可以在全局命名空间中提供这些名称。 标题   <stdlib.h>确实提供了相同的声明和定义   在全局命名空间内,就像在C标准中一样。它也可能   在名称空间std中提供这些名称。 -end示例]

答案 1 :(得分:7)

事实并非如此,因为C ++的主要目标是向后兼容C.唯一的区别在于

#include <cstdio>

所有函数都在std命名空间

答案 2 :(得分:3)

C标准头包含在C ++标准库中以实现兼容性。

区别在于相应C ++头中的标识符必须(也)在std命名空间中,而C头中的标识符必须(也)在全局命名空间中可用。

此外,<c...>标头为abspow等功能添加了重载。

此外,C ++标头用一些重载函数替换了一些C分类/比较宏。

答案 3 :(得分:-1)

C ++标准库明确包含C标准库,因此它是C ++的完全合法部分。如果你在谈论在C ++代码中使用#include <stdio.h>,那么你不应该这样做,因为那是C语法,在C ++代码中,你应该总是使用cstdio