Cygwin的gcc.4.9.2:错误: ':: lrintl' 尚未声明
问题描述:
这一问题与此主题:cygwin support for C++11 in g++4.9.2Cygwin的gcc.4.9.2:错误: ':: lrintl' 尚未声明
我有同样的问题:
error: ‘log2’ is not a member of ‘std’
我申请建议的补丁,只能得到另一个错误。 这里包括CMATH
#include <cmath>
#include <iostream>
int main()
{
std::cout << "hello" << std::endl;
}
返回该错误
$ g++ -std=c++11 test.cpp
In file included from test.cpp:1:0:
/usr/lib/gcc/x86_64-pc-cygwin/4.9.2/include/c++/cmath:1107:11: error: '::lrintl' has not been declared
using ::lrintl;
^
/usr/lib/gcc/x86_64-pc-cygwin/4.9.2/include/c++/cmath:1129:11: error: '::rintl' has not been declared
using ::rintl;
我要求在cygwin的IRC频道求助:
[23:02] <XXX> hi, has anyone had problems with gcc 4.9.2 in cygwin? i encountered the problem discussed here : https://cygwin.com/ml/cygwin/2015-03/msg00247.html
[23:03] <XXX> yet, if i apply the patch, i get another error: /usr/lib/gcc/x86_64-pc-cygwin/4.9.2/include/c++/cmath:1107:11: error: '::lrintl' has not been declared
[23:28] <YYY> long double functions are still missing on cygwin
[23:30] <XXX> so is there no way to make it work then?
[23:31] <YYY> sure, help add the missing functions to newlib/cygwin
[23:34] <XXX> i am not using any long double functions in my code -- so i assume including cmath does not work for anybody?
[23:35] <YYY> just drop the std:: instead
[23:37] <XXX> sorry, i'm not sure what you mean. remove 'std::' where ?
可悲的是,谈话结束那里。我不知道应该在哪里放下std ::',也不能解决问题。 任何人都可以帮忙吗?
由于提前, 贡纳尔
答
未打补丁的<cmath>
工作正常,在这里,如果我做的:的
auto x = log2(10);
代替:
auto x = std::log2(10);
也许这就是YYY是指“下降STD ::”。
如果必须使用修补<cmath>
,您可以注释掉两行违规,或者如果你不想修改头的任何比你已经有了,加rintl
和lrintl
一些虚拟的定义,你包括前它。例如:
#include <stdexcept>
long double rintl(long double arg) { throw std::runtime_error("rintl not implemented"); }
long lrintl(long double arg) { throw std::runtime_error("lrintl not implemented"); }
#include <cmath>