Cygwin编译错误:“log10l”无法识别(声明)

时间:2014-10-07 15:39:17

标签: c++ compiler-errors cygwin

我正在编译一个关于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

2 个答案:

答案 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类型。