std gnu++11 导致的问题

本文探讨了在使用GCC4.8.1编译器时遇到的C++11标准编译错误,特别是关于__float128未声明的问题,并提供了两种解决方案:一是采用--std=c++11代替-std=gnu++11;二是通过添加-D__STRICT_ANSI__编译选项来规避。同时,文章提及了使用Clang作为替代方案的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

今天打算在自己新的C++工程中启用C++11, 到时候了,该全面升级了。

编译器是GCC4.8.1, 查看官方文档:http://gcc.gnu.org/onlinedocs/gcc-4.8.1/libstdc++/manual/manual/using.html#manual.intro.using.flags

看到可以使用的选项是-std=gnu++11,结果编译报错,都是:

/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/type_traits:268:39: error: use of undeclared identifier '__float128'    struct __is_floating_point_helper<__float128>

打开type_traits文件,找到268行左右的代码:

#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128)  template<>    struct __is_floating_point_helper<__float128>    : public true_type { };#endif

根据Google的结果,有个解决方案:

一是换用--std=c++11,问题解决。

二是使用__STRCT_ANSI__

编译选项中添加了-D__STRICT_ANSI__后,果然问题解决。


另外,安装了clang3.2后,由于兼容gcc所有参数,编译时只需要将c++命令换成clang++即可。都知道clang编译快,报错友好。等到发布的时候,再换成gcc,获得更快的性能。还是不错的用法。

           

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值