免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4082 | 回复: 11

[C++] clang 编译器,用不了__gnu_cxx::__sso_string [复制链接]

论坛徽章:
2
技术图书徽章
日期:2014-04-15 16:30:27金牛座
日期:2014-06-06 16:20:49
发表于 2015-07-29 13:56 |显示全部楼层
本帖最后由 knull 于 2015-07-30 10:10 编辑

用了muduo库;但是,公司要求用clang,在编译的时候,发现clang编译__gnu_cxx::__sso_string这个类,编译不通过。直接写测试代码,发现也是有问题的。求教各位大侠
  1. #include <ext/vstring.h>
  2. #include <ext/vstring_fwd.h>
  3. typedef __gnu_cxx::__sso_string string;
  4. int main()
  5. {
  6.         string str("test");
  7.         return 0;
  8. }
复制代码
补充说明下环境:centos6.3;gcc是4.47的;clang是3.1的;

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
发表于 2015-07-29 14:47 |显示全部楼层
我也遇到过clang编译过不去但是gcc能过去的情况,我的解决方法就是不用clang。

论坛徽章:
43
15-16赛季CBA联赛之四川
日期:2018-10-13 23:26:5015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:36程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
发表于 2015-07-29 23:40 |显示全部楼层
这个sso string是老版G++/libstdc++的“历史遗迹”,GCC 4.7版以前的std::string用的是不合标准的ref counting,所以在ext里面加了一个带SSO优化不做ref counting的string,接近C++11标准。
如果你用新版GCC或者Clang/libc++,折腾着玩意儿纯属浪费时间。

论坛徽章:
0
发表于 2015-07-30 01:26 |显示全部楼层
回复 1# knull


In CMakeLists.txt
  1. set(CXX_FLAGS
  2. -g
  3. # -DVALGRIND
  4. -DMUDUO_STD_STRING    # uncomment this line
  5. -DCHECK_PTHREAD_RETURN_VALUE
复制代码

论坛徽章:
2
技术图书徽章
日期:2014-04-15 16:30:27金牛座
日期:2014-06-06 16:20:49
发表于 2015-07-30 10:09 |显示全部楼层
回复 4# giantchen
你好,非常感激你的回复;你似乎对muduo比较了解啊;有用clang编译过吗?用clang编译,还是有许多问题的,比较麻烦。
如果方便的话,讨论下啊
   

论坛徽章:
2
技术图书徽章
日期:2014-04-15 16:30:27金牛座
日期:2014-06-06 16:20:49
发表于 2015-07-30 10:14 |显示全部楼层
回复 3# windoze

你好,谢谢你的回复;
这个问题暂时改过来了;
看clang编译,有C++0X宏开关的地方(__GXX_EXPERIMENTAL_CXX0X__),这个地方代码编译不通过(std::move),好像报错是“右值引用无法绑定到左值”;
查看了下clang的属性,3.1的clang已经指出c++11标准了,为啥编译不过c++0x的代码啊?
求指点
   

论坛徽章:
0
发表于 2015-07-30 12:34 |显示全部楼层
本帖最后由 giantchen 于 2015-07-29 20:35 编辑

回复 6# knull

你的clang版本太低,可能对C++11支持不够好。既然用clang为啥不用个高版本的?
   

论坛徽章:
43
15-16赛季CBA联赛之四川
日期:2018-10-13 23:26:5015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:36程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
发表于 2015-07-30 14:38 |显示全部楼层
回复 5# knull

giantchen必须对muduo很了解,他就是原作者……

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
发表于 2015-07-30 15:08 |显示全部楼层
膜拜lz出现的高人。

论坛徽章:
2
技术图书徽章
日期:2014-04-15 16:30:27金牛座
日期:2014-06-06 16:20:49
发表于 2015-07-30 17:44 |显示全部楼层
回复 7# giantchen
就是公司环境要求。
公司开发环境、生产环境 应该是centos6;在这个环境下,只能用gcc的库版本默认是4.4;clang也只能用3.1的;

比较悲剧

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP