C的pow函数拒绝使用可变指数

前端之家收集整理的这篇文章主要介绍了C的pow函数拒绝使用可变指数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有以下代码片段:
int i; double value;
for(i = 0; i < CONSTANT; i++) {
  value = (double)pow(2,i);
}

尝试编译此代码产生“未定义的引用”pow“”错误.

包括或排除math.h没有任何区别,因为它最终被包括在内.

将2.0升级到硬编码的电源可以正常工作,但如果用包含i的表达式替换指数,则一切都会失败.

我究竟做错了什么?谢谢.

解决方法

这是一个非常有趣的行为,也是一个很好的学习例子.

解决你的问题,添加

-lm

到你的gcc命令行(只要你使用gcc).这告诉编译器与数学库链接.

似乎正在发生的是,如果你正在使用

pow(2.0,3);

编译器实现这个表达式求值为一个常量,只做替换.

因此,不能调用函数.

猜你在找的C&C++相关文章