gpt4 book ai didi

c++ - cmath vs math.h(以及类似的 c 前缀 vs .h 扩展头文件)

转载 作者:IT老高 更新时间:2023-10-28 13:24:25 36 4
gpt4 key购买 nike

我已经看到了一些关于 iostreamiostream.h 之类的差异的信息。根据我从这些收集到的信息,它们之间的区别在于没有 .h 扩展名的版本不会填充命名空间,而带有扩展名的版本会。

cmathmath.h 是否相同?为什么 cmath(以及许多其他类似的文件)以 c 为前缀,而不仅仅是 math?它们之间还有更多的区别吗?

最佳答案

I've seen some information about differences between things like iostream vs iostream.h.

[iostream.h] 不是标准头文件。

这不是您提出的问题的示例。

[cmath] 在 std 命名空间中定义符号,也可以在全局命名空间中定义符号。 [math.h] 在全局命名空间中定义符号,也可以在 std 命名空间中定义符号。如果您包含前者并使用非限定符号,则它可以用一个编译器编译,但不能用另一个编译器编译。因此使用 [math.h] 是个好主意。通常,对于此类 header 对,使用 [.h] 版本。

c++98 提供了 cxxx header 不会污染全局命名空间的正式保证。也许这就是他们被定义的原因。然而,这比污染的实现要难一些,所以在实践中,我所知道的标准库实现在这方面没有遵循标准,所以它最终被改变以反射(reflect) c++11 中的现实。

关于c++ - cmath vs math.h(以及类似的 c 前缀 vs .h 扩展头文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10694255/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com