我正在编译一个关于cygwin的linux程序(和那些有Windows计算机的学生一起上课)并且我认为遇到兼容性问题。
我得到的错误是:
`$ Make
g++ -fopenmp -c start.cpp errors.cpp
start.cpp: In function ‘int main(int, char**)’:
start.cpp:1184:54: error: ‘log10l’ was not declared in this scope
else po[i]=log10l(p_rj[i]/(1-p_rj[i]));
^
Makefile:7: recipe for target 'start.o' failed
Make: *** [start.o] Error 1`
未声明log10l。关于cygwin的网站对此进行了一些研究,我发现这个page列出了“未实现的系统接口”,而log10l就在那里。
我是否需要将“log10l”替换为兼容功能,为什么它不兼容?
应用程序在我的linux盒子上编译没有错误。
非常感谢任何帮助。
LP
答案 0 :(得分:0)
如果该函数只是采用内部表达式的日志基数10,则可以用
替换它else po[i] = std::log10(p_rj[i]/(1-p_rj[i]));
只要你
#include <cmath>
答案 1 :(得分:0)
Cygwin目前不支持long double
数学函数,其中log10l
是一个。您可以改为使用log10
,但它仅限于double
类型。