pow()函数在没有任何数学库的情况下工作

时间:2016-04-12 14:02:26

标签: c++ math libraries pow

在某些软件/编译器上似乎pow()函数在没有任何数学库的情况下工作。仅限<iostream>。但在其他人抱怨。数学函数是否已添加到<iostream>库或其他地方?

2 个答案:

答案 0 :(得分:3)

标题可以 - 通常也可以 - 包含其他标题。标准库头文件也不例外。

即使您选择不包含您所依赖的标题(我们将其命名为a),标题可能会被另一个标题(我们将其命名为b)包含在内你确实包括了。在这种情况下,如果b标题被修改为不包含a,则无法保证您的计划继续有效。这就是为什么你必须总是包含你所依赖的所有标题 - 即使你的程序似乎工作而不包括其中一些。

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

答案 1 :(得分:1)

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

<iostream>中包含的内容,只是检查了当前版本的GCC(我使用archlinux,所以它是最新的)并不包含cmath任何iostream的内在包括。

无论如何,即使它有效,也违反标准。明确包含<cmath>