2017-04-06 30 views
0

我刚遇到一件奇怪的事情。在测试math.h时,我尝试使用pow()并编译它。我没有链接math.h。 但是,当我尝试像fmod()一样的东西时,我必须在编译程序时链接math.h。 为什么我必须在第二种情况下链接库,但不是在第一种情况下?没有需要链接的一些功能

回答

2

您的编译器可能会用常量替换pow的某些用法。例如,它可以用8.0代替pow(2.0, 3.0)。这是一个很好的优化,意味着您不再需要math.h中的pow

但是你的编译器可能无法取代fmod,或数学函数所有使用,所以它仍然需要链接到数学库。