【问题标题】:pow() function working without any math librariespow() 函数在没有任何数学库的情况下工作
【发布时间】:2016-04-12 14:02:26
【问题描述】:

似乎在某些软件/编译器上,pow() 函数根本不需要任何数学库。只有<iostream>。但在其他人中,它抱怨。数学函数是否已添加到 <iostream> 库或其他地方?

【问题讨论】:

标签: c++ math libraries pow


【解决方案1】:

标头可以(而且经常会)包含其他标头。标准库头文件也不例外。

即使您选择不包含您所依赖的标头(我们将其命名为a),该标头也有可能恰好包含在您确实包含的另一个标头(我们将其命名为b)中。在这种情况下,如果 b 标头被修改为不包含 a,则不能保证您的程序继续工作。这就是为什么您必须始终包含您所依赖的所有头文件的原因——即使您的程序似乎可以在不包含其中一些头文件的情况下运行。

标准库的不同实现的所有不同版本都是不同的,因此一个版本中的a 可以包含b,而另一个版本中的a 也可以不包含b。这同样适用于具有多个实现版本的所有 API。

【讨论】:

    【解决方案2】:

    正如这里明确指出的那样,pow IS 在 cmath 标头中。 http://www.cplusplus.com/reference/cmath/pow/

    <iostream> 中包含什么,刚刚检查了当前版本的 GCC(我使用的是 archlinux,所以它是最新的)没有将 cmath 包含到任何 iostream 的内部包含中。

    不管怎样,就算有效,也是违反标准的。明确包含<cmath>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2017-09-24
      • 2021-12-19
      • 2018-01-10
      • 1970-01-01
      相关资源
      最近更新 更多