我知道大多数编译器都允许这两个:
#include <stdio.h>
//和
#include <cstdio>
但有人认为&lt; stdio.h&gt;实际上并不是C ++标准。
是真的吗?
答案 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...>
标头为abs
,pow
等功能添加了重载。
此外,C ++标头用一些重载函数替换了一些C分类/比较宏。
答案 3 :(得分:-1)
C ++标准库明确包含C标准库,因此它是C ++的完全合法部分。如果你在谈论在C ++代码中使用#include <stdio.h>
,那么你不应该这样做,因为那是C语法,在C ++代码中,你应该总是使用cstdio