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