在一些软件/编译器上,pow()函数似乎完全不需要任何数学库。只对<iostream>。但在另一些情况下,它会抱怨。数学函数是否被添加到<iostream>库或其他地方?
发布于 2016-04-12 14:15:11
标题可以--而且经常包括--包括其他标头。标准库头也不例外。
即使您选择不包含所依赖的标题(让我们将其命名为a),但该标头可能恰好包含在您所包含的另一个标头中(让我们命名为b)。在这种情况下,如果b头被修改为不包含a,则不能保证程序继续工作。这就是为什么您必须始终包含您所依赖的所有标头--即使您的程序似乎没有包含其中的一些标题也是如此。
标准库的不同实现的所有不同版本都是不同的,因此一个版本中的a可以包括b,而另一个版本中的a也可以不包含b。对于具有多个实现版本的所有API也是如此。
发布于 2016-04-12 14:18:01
正如在这里明确指出的,pow在cmath中。http://www.cplusplus.com/reference/cmath/pow/。
在<iostream>中包含的是什么,刚刚检查了当前版本的GCC(我正在使用archlinux,所以它是最新的),没有在iostream的任何内部包含中包含cmath。
无论如何,即使它有效,也是违反标准的。显式地包含<cmath>。
https://stackoverflow.com/questions/36575614
复制相似问题