gol*_*enk 56 c++ header include
我已经看到了一些关于iostream
vs 之间差异的信息iostream.h
.根据我从中收集的内容,它们之间的区别在于,没有.h
扩展名的版本将不会填充命名空间,而具有扩展名的版本将填充.
对于cmath
vs,这是一样的math.h
吗?为什么cmath
(以及许多其他类似的文件)以a c
为前缀而不仅仅是math
?他们之间有更多的差异吗?
感谢您的时间!
Che*_*Alf 30
我已经看到了一些关于iostream和iostream.h之间差异的信息.
[iostream.h]不是标准标题.
这不是你提出的问题的一个例子.
[cmath]在std
名称空间中定义符号,也可以在全局名称空间中定义符号.[math.h]在全局命名空间中定义符号,也可以在std
命名空间中定义符号.如果包含前者并使用非限定符号,则可以使用一个编译器进行编译,但不能使用另一个编译器进行编译.因此使用[math.h]是个好主意.通常,对于这样的标题对,使用[.h]版本.
c ++ 98提供了c xxx
头的正式保证,不会污染全局命名空间.也许这就是他们被定义的原因.然而,这比实施污染更难实现,所以在实践中我没有标准的库实现遵循这方面的标准,因此它最终改为反映c ++ 11中的现实.
小智 5
也许这会有所帮助:
C++库包含与C语言库相同的头文件结构组织的相同定义,区别如下:
1 - 每个头文件的名称与 C 语言版本相同,但带有“c”前缀且没有扩展名。例如,C 语言头文件 <stdlib.h> 的 C++ 等效项是 <cstdlib>。
2 - 库的每个元素都在 std 命名空间中定义。