【发布时间】:2017-04-06 23:28:50
【问题描述】:
我刚刚遇到了一件奇怪的事情。在测试 math.h 时,我尝试使用 pow() 并对其进行编译。我不必链接 math.h 。 但是当我尝试使用 fmod() 之类的方法时,我必须在编译程序时链接 math.h。 为什么我必须在第二种情况下链接库而不在第一种情况下?
【问题讨论】:
标签: c
我刚刚遇到了一件奇怪的事情。在测试 math.h 时,我尝试使用 pow() 并对其进行编译。我不必链接 math.h 。 但是当我尝试使用 fmod() 之类的方法时,我必须在编译程序时链接 math.h。 为什么我必须在第二种情况下链接库而不在第一种情况下?
【问题讨论】:
标签: c
您的编译器可能会将pow 的某些用法替换为常量。例如,它可以将pow(2.0, 3.0) 替换为8.0。这是一个很好的优化,意味着您不再需要 math.h 中的 pow。
但是你的编译器可能无法替换fmod,或者数学函数的所有用法,所以它仍然需要链接到数学库。
【讨论】: