C的pow函数拒绝使用可变指数
发布时间:2020-12-16 05:52:44 所属栏目:百科 来源:网络整理
导读:假设我有以下代码片段: int i; double value;for(i = 0; i CONSTANT; i++) { value = (double)pow(2,i);} 尝试编译此代码产生“未定义的引用”pow“”错误. 包括或排除math.h没有任何区别,因为它最终被包括在内. 将2.0升级到硬编码的电源可以正常工作,但如
假设我有以下代码片段:
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); 编译器实现这个表达式求值为一个常量,只做替换. 因此,不能调用库函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |